0

可能重复:
在 (0 - X) 范围内生成唯一编号,保留历史记录以防止重复

编写一个生成随机数组的函数,如下所示:

随机数组(10)

=> [0,2,3,9,6,5,4,7,8,1]

:(

我在上学时没有学习编程,所以我写了一个丑陋的。这是我的程序。

var min = 0,
    max = 15,  //Here generate an random array from 0-14
    i,
    j,
    arr = [],
    temp = [];

for (i = min;i<max; i++){
    arr.push(i);
}

for(j=min;j<1000;j++){
   temp.push(arr[Math.floor(Math.random() * arr.length)]);  
}
function unique(array){
      var b = [];
      for(var i=0; i<array.length; i++){
         if(b.indexOf(array[i]) == -1) b.push(array[i]);
      }
      return b;
}
alert(unique(temp));

我通过搜索互联网编写了这个程序,我认为它并不完美,其中没有算术......

4

3 回答 3

0

这是一种方法:

var RandomArray = function RandomArray(elements) {
    var min = 0,        //min random number
        max = 15,       //max random number
        i,              //incrementer
        arr = [];       //output
    //generate an array of length (elements) containing random number from min to max
    for (i = 0; i < elements; i += 1) {
        arr.push(Math.floor(Math.random() * (max + 1)) + min);
    }
    //return the array
    return arr;
};

这是一个小提琴:http: //jsfiddle.net/mKFk9/

于 2012-11-03T10:26:30.167 回答
0

这可能是您需要的:

/**
* range Get an array of numbers within a range
* @param min {number} Lowest number in array
* @param max {number} Highest number in array
* @param rand {bool} Shuffle array
* @return {array}
*/
function range( min, max, rand ) {
  var arr = ( new Array( ++max - min ) )
    .join('.').split('.')
    .map(function( v,i ){ return min + i })
  return rand
    ? arr.map(function( v ) { return [ Math.random(), v ] })
       .sort().map(function( v ) { return v[ 1 ] })
    : arr
}

演示:http: //jsfiddle.net/elclanrs/QBVbr/

于 2012-11-03T10:39:12.793 回答
0
function randomArray(n) {

  var array = [];
  for (i = 0; i < n; i++) {
    array[i] = i;
  }
  var newArray = [];
  for (i = 0; i < n; i++) {
    var num = Math.round(Math.random() * (n - i - 1));
    newArray[i] = array[num];
    array.splice(num, 1);
  }
  alert(newArray);
}
randomArray(100);
于 2012-11-03T14:16:27.757 回答