2012-11-03 82 views
0

可能重複:
Generate unique number within range (0 - X), keeping a history to prevent duplicatesJavascript:使其一個隨機陣列

編寫一個函數,使隨機陣列,因爲我在下面寫道:

RandomArray(10)

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

:(

我上學的時候並沒有學習progarming,所以我寫了一個醜陋的一個。這裏是我的程序。

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

我通過搜索互聯網寫了這個程序,它並不完美,我認爲,在它裏面沒有算術......

+1

輸出有不同的任務和目標。只需告訴我們你的腳本需要什麼。 – polin

回答

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); 
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/

+0

這恰好適用於'min = 0',但事實上你正在使用'min'到'min + max'的時間間隔。 – pimvdb

+0

是的,但隨機數組的編號必須是唯一的。 –

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/