如何让这个脚本返回数字0-9而不是1-10

How to get this script to return numbers 0-9 instead of 1-10

本文关键字:1-10 数字 返回 脚本      更新时间:2023-09-26

我正试图让数字0-9随机排列。例如:2,4,0,1,3,5,9,7,8,6…目前它从1开始,而不是0。这就是我正在使用的-(我对js的了解是最低的)

<script type="text/javascript" language="Javascript">
function pick(n, min, max){
    var values = [], i = max;
    while(i >= min) values.push(i--);
    var results = [];
    var maxIndex = max;
    for(i=1; i <= n; i++){
        maxIndex--;
        var index = Math.floor(maxIndex * Math.random());
        results.push(values[index]);
        values[index] = values[maxIndex];
    }
    return results;
}
function go(){
    var running = true;
    do{
        if(!confirm(pick(10, 0, 9))){
            running = false;
        }
    }while(running);
}
</script>

感谢您的投入。。。

为了可读性和更容易的调试,在这里创建更多的函数可能更有益。

// Creates the array [min, min+1, ..., max-1, max]
function createRange(min, max) {
  var range = [];
  while (min <= max) {
    range.push(min);
    min++;
  }
  return range;
}
// Fisher-Yates Shuffle from http://bost.ocks.org/mike/shuffle/
// but you can replace this with your own shuffler if you want
function yatesShuffle(array) {
  var m = array.length, t, i;
  while (m) {
    i = Math.floor(Math.random() * m--);
    t = array[m];
    array[m] = array[i];
    array[i] = t;
  }
  return array;
}
// Pick `n` numbers from the range `[min, ..., max]`.
// `n` must be less than or equal to `(max - min)`.
function pick(n, min, max) {
  var range = createRange(min, max);
  var shuffled = yatesShuffle(range);
  return shuffled.slice(0,n);
}
function go(){
    var running = true;
    do{
        if(!confirm(pick(10, 0, 9))){
            running = false;
        }
    }while(running);
}