Javascript:制作随机数组

时间:2012-11-03 10:09:58

标签: javascript random

  

可能重复:
  Generate unique number within range (0 - X), keeping a history to prevent duplicates

编写一个创建随机数组的函数,如下所述:

RandomArray(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));

我通过搜索互联网编写了这个程序,我觉得这不完美,没有算术......

3 个答案:

答案 0 :(得分: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/

答案 1 :(得分: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/

答案 2 :(得分: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);