|
不重復(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)過(guò)測(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í)行]
JavaScript技術(shù):javascript獲取不重復(fù)的隨機(jī)數(shù)的方法比較,轉(zhuǎn)載需保留來(lái)源!
鄭重聲明:本文版權(quán)歸原作者所有,轉(zhuǎn)載文章僅為傳播更多信息之目的,如作者信息標(biāo)記有誤,請(qǐng)第一時(shí)間聯(lián)系我們修改或刪除,多謝。