獲取不重復(fù)的隨機數(shù)

來自腳本之家

var count=3000; 
var original=new Array;   //原始數(shù)組 

//給原始數(shù)組original賦值 
for (var i=0;i<count;i++){ 
    original[i]=i+1; 
} 
original.sort(function(){ return 0.5 - Math.random(); }); 
for (var i=0;i<count;i++){ 
console.log(original[i]+"  "); 
} 

JavaScript的Math對象提供了random()方法,可以獲取一個[0,1)的隨機數(shù),利用這個方法,取一個隨機數(shù)容易,但要是取一個隨機并且不重復(fù)的數(shù),就需要繞點彎子

試著更換一下思路,獲取隨機數(shù)并不一定需要隨機取得一個值,并前后判斷是否重復(fù),可以首先創(chuàng)建一個范圍,并以該范圍所有的值創(chuàng)建一個數(shù)組,將數(shù)組的排序隨機,那么從該數(shù)組中按線性獲取的值,不也就是隨機不定的嗎

且由于只是重新排列了數(shù)組,數(shù)組中永遠不會出現(xiàn)重復(fù)的值,只需利用Array的sort()方法和Math.random()方法就可以實現(xiàn)獲取隨機不重復(fù)的功能

sort()方法:sort()用于數(shù)組,如果不傳入?yún)?shù),那么它會對數(shù)組的每一項調(diào)用toString()方法,再對每一個字符串進行比較排序(按照首字符的編碼大小排序)

若傳入?yún)?shù),會按照參數(shù)的正負情況對每兩個進行該方法的數(shù)組項排序。

無參的方法調(diào)用在升降排序number類型數(shù)據(jù)時并不好用,所以一般給sort()方法傳入一個“比較”函數(shù),以此為number類型的數(shù)組項升降排序

利用該方法的排序特性,隨機這種排序就可以達到隨機打亂數(shù)組的效果

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容