javascript獲取不重復(fù)的隨機(jī)數(shù)的方法比較
更新時(shí)間:2008年09月08日 20:07:25 作者:
js永不重復(fù)隨機(jī)數(shù)實(shí)現(xiàn)代碼比較
不重復(fù)的隨機(jī)數(shù)方案1:1531 毫秒
一般的思路是先創(chuàng)建一個(gè)1-3000的數(shù)組,每一次取出一個(gè),然后讓這個(gè)數(shù)組減少一個(gè), 取一個(gè),減少一個(gè),這樣就可以做到永不重復(fù)了。
[Ctrl+A 全選 注:引入外部Js需再刷新一下頁面才能執(zhí)行]
不重復(fù)的隨機(jī)數(shù)方案2:297毫秒
但是方案1采用了slice方法,此方法重新生成數(shù)組,會(huì)大量占用內(nèi)存和cpu運(yùn)算, 效率很低,所以改良一下,從原始數(shù)組取出一個(gè)數(shù), 然后讓原始數(shù)組的這個(gè)位置賦值為null 。這樣下一次取數(shù)的時(shí)候判斷如果為null就不取,直到不為null為止。 經(jīng)過測(cè)試,可以顯著提高效率。
[Ctrl+A 全選 注:引入外部Js需再刷新一下頁面才能執(zhí)行]
不重復(fù)的隨機(jī)數(shù)方案3:234毫秒
換一個(gè)思路,如果把原始數(shù)組origin打散,然后再依次打印,
這樣也可以做到隨機(jī)永不重復(fù),而且效率更高,
因?yàn)榉桨?運(yùn)行到越后面,原始數(shù)組為null的頻率就越高,運(yùn)算的次數(shù)就越多。
[Ctrl+A 全選 注:引入外部Js需再刷新一下頁面才能執(zhí)行]
您可能感興趣的文章:
- 使用js Math.random()函數(shù)生成n到m間的隨機(jī)數(shù)字
- Javascript 生成指定范圍數(shù)值隨機(jī)數(shù)
- JS生成某個(gè)范圍的隨機(jī)數(shù)【四種情況詳解】
- js生成隨機(jī)數(shù)之random函數(shù)隨機(jī)示例
- JavaScript 產(chǎn)生不重復(fù)的隨機(jī)數(shù)三種實(shí)現(xiàn)思路
- js獲取數(shù)組任意個(gè)不重復(fù)的隨機(jī)數(shù)組元素
- js實(shí)現(xiàn)簡(jiǎn)單排列組合的方法
- JS實(shí)現(xiàn)的全排列組合算法示例
- JS實(shí)現(xiàn)的排列組合算法示例
- JS實(shí)現(xiàn)二維數(shù)組元素的排列組合運(yùn)算簡(jiǎn)單示例
- JavaScript隨機(jī)數(shù)的組合問題案例分析
相關(guān)文章
獲取JS中網(wǎng)頁各種高寬與位置的方法總結(jié)
本文詳細(xì)羅列了如何在javascript獲取網(wǎng)頁各種高寬及位置,內(nèi)容比較全面,有需要的可以參考一下。2016-07-07
手把手教你實(shí)現(xiàn)一個(gè)JavaScript時(shí)間軸組件
本文主要是給大家?guī)硪粋€(gè)時(shí)間軸的組件開發(fā)教程,其主要功能就是可以拖動(dòng)時(shí)間軸來定位當(dāng)前時(shí)間,可以通過鼠標(biāo)滾輪來修改當(dāng)前時(shí)間分辨率,需要的可以參考一下2022-10-10
javascript模擬實(shí)現(xiàn)計(jì)算器
這篇文章主要為大家詳細(xì)介紹了javascript模擬實(shí)現(xiàn)計(jì)算器,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2021-04-04
js簡(jiǎn)單實(shí)現(xiàn)點(diǎn)擊左右運(yùn)動(dòng)的方法
這篇文章主要介紹了js簡(jiǎn)單實(shí)現(xiàn)點(diǎn)擊左右運(yùn)動(dòng)的方法,實(shí)例分析了javascript實(shí)現(xiàn)左右運(yùn)動(dòng)的相關(guān)要點(diǎn)與技巧,非常具有實(shí)用價(jià)值,需要的朋友可以參考下2015-04-04
JS實(shí)現(xiàn)的自定義右鍵菜單實(shí)例二則
這篇文章主要介紹了JS實(shí)現(xiàn)的自定義右鍵菜單,以兩則實(shí)例形式分析了javascript自定義右鍵菜單效果的實(shí)現(xiàn)技巧,具有一定參考借鑒價(jià)值,需要的朋友可以參考下2015-09-09

