日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区

您的位置:首頁技術文章
文章詳情頁

通過js隨機函數Math.random實現亂序

瀏覽:192日期:2024-05-08 08:59:39

亂序的意思想必沒有不知道:就是將數組打亂。聽到亂序一般都會想到js的隨機函數Math.random();

var values = [1, 2, 3, 4, 5];values.sort(function() { return Math.random() - 0.5;});console.log(values)

利用數組的sort方法,判斷隨機出來的0~1值與0.5的大小,實現排序。看似一個很不錯的方案,代碼邏輯也沒毛病,一般情況下也確實能夠做到亂序。但是,這是一個偽排序,是的還有但是(我也是今天才知道的,不求甚解的毛病啊~),為什么呢?先看看這個亂序的結果吧:

var times = [0, 0, 0, 0, 0];for (var i = 0; i < 100000; i++) { let arr = [1, 2, 3, 4, 5]; arr.sort(() => Math.random() - 0.5); times[arr[4] - 1]++;};console.log(times)

測試的原理是:將[1, 2, 3, 4, 5]亂序10萬次,計算亂序后數組的最后一個元素是1,2,3,4,5的次數分別是多少。

運行幾次得到的結果為:

通過js隨機函數Math.random實現亂序通過js隨機函數Math.random實現亂序通過js隨機函數Math.random實現亂序

由這幾次運行得到的結果可以看出:2出現的最后的次數明顯少于其他數字,不是隨機嗎?按理說概率應該是相差不多才對啊!其實問題是在sort方法,各個瀏覽器對sort的實現方式不一樣。

Chrome的sort

基于V8引擎,它的排序算進行了很多的優化,但是核心是小于等于10的數組用插入排序(穩定),大于10的采用了quickSort(不穩定)

FireFox的sort

基于SpiderMonkey引擎,采用了歸并排序(穩定)

Safari的sort

基于Nitro(JavaScriptCore )引擎,如果沒有自定義的排序規則傳入,采用桶排序(不一定穩定, 桶排序的穩定性取決于桶內排序的穩定性, 因此其穩定性不確定。),傳入自定義規則,采用歸并排序(穩定)

Microsoft Edge/IE9+

基于Chakra引擎,采用快排(不穩定)

以下用chrome測試亂序各種結果的概率:

var times = 100000;var res = {};for(var i = 0; i < times; i++){ var arr = [1, 2, 3]; arr.sort(() => Match.random() - 0.5); var key = JSON.stringify(arr); res[key] ? res[key]++ : res[key] = 1;}// 為了方便展示,轉換成百分比for (var key in res) { res[key] = res[key] / times * 100 + ’%’;}console.log(res);

結果如下

通過js隨機函數Math.random實現亂序

幾種結果出現的概率相差很大...所以說不是一個真正的亂序。

Fisher-Yates算法【也叫“洗牌算法”】:為什么叫 Fisher?Yates 呢? 因為這個算法是由 Ronald Fisher 和 Frank Yates 首次提出的。代碼如下:

function shuffle(a) { var j, x, i; for (i = a.length; i; i--) { j = Math.floor(Math.random() * i); x = a[i-1]; a[i - 1] = a[j]; a[j] = x; } return a;}

其原理就是:遍歷數組元素,然后將當前元素與以后隨機位置的元素進行交換,這樣亂序更加徹底。

如果用ES6的寫法還能精簡成:

function shuffle(a) { for(let i = a.length; i; i--) { let j = Math.floor(Math.random() * i); [a[i - 1], a[j]] = [a[j], a[i - 1]]; } return a;}

再用上面的demo測試一下:

var times = 100000;var res = {};for (var i = 0; i < times; i++) { var arr = shuffle([1, 2, 3]); var key = JSON.stringify(arr); res[key] ? res[key]++ : res[key] = 1;}// 為了方便展示,轉換成百分比for (var key in res) { res[key] = res[key] / times * 100 + ’%’}console.log(res)

得到結果如下:

通過js隨機函數Math.random實現亂序

各種結果的概率都基本相同了,所以真正實現了亂序的效果!

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持好吧啦網。

標簽: JavaScript
相關文章:
日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区
国产精品精品| 亚洲一区国产一区| 蜜臀av国产精品久久久久| 欧美精品自拍| 日韩制服丝袜av| 日韩av午夜在线观看| 欧美日韩亚洲一区二区三区在线| 亚洲一区二区成人| 亚洲一区二区三区久久久| 综合激情网站| 日本欧美在线看| 亚洲精品自拍| 久久亚洲精品中文字幕| 青青青免费在线视频| 五月天综合网站| 日韩二区三区四区| 成人三级高清视频在线看| 91精品一区二区三区综合在线爱| 亚洲午夜一级| 日本亚洲最大的色成网站www| 国产美女亚洲精品7777| 欧美成a人国产精品高清乱码在线观看片在线观看久 | 亚州欧美在线| 精品国产一级| jiujiure精品视频播放| 日本欧美在线| 日韩一区电影| 日本午夜精品视频在线观看| 国产成人精品一区二区三区在线| 久久久久网站| 国产精品久久久久9999高清| 欧美 日韩 国产精品免费观看| 亚洲三级网站| 成人羞羞视频播放网站| 97久久超碰| 亚洲激情欧美| 日本综合字幕| 老牛国内精品亚洲成av人片 | 一区二区视频欧美| 精品久久91| 国产亚洲一区| 亚洲日本国产| 夜夜嗨av一区二区三区网站四季av| 国产欧美啪啪| 日本亚洲不卡| 免费国产亚洲视频| 午夜欧美理论片| av高清一区| 国产福利片在线观看| 日韩国产欧美视频| 视频一区中文字幕国产| 99精品美女| 欧美一区久久久| 高清在线一区| 精品三区视频| 国产精品久久乐| 国产欧美日韩免费观看| 国产调教一区二区三区| 久久精品xxxxx| 日韩国产欧美在线视频| 国产视频一区二区在线播放| 成人羞羞视频播放网站| 国产91久久精品一区二区| 欧美日韩尤物久久| 成人自拍av| 国产综合亚洲精品一区二| 久久精品av| 女人av一区| 亚洲午夜免费| 欧美日韩亚洲一区三区| 国产精品亚洲片在线播放| 青青草精品视频| 麻豆91在线播放| 久久男人av资源站| 日韩欧美三级| 亚洲一区国产一区| 国产精品久久乐| 亚洲大片在线| 日韩欧美另类中文字幕| 国内一区二区三区| 性欧美69xoxoxoxo| 亚洲3区在线| 久久亚洲资源中文字| 9国产精品视频| 国产极品模特精品一二| 成人精品亚洲| 欧美综合精品| 91精品一区二区三区综合在线爱| 日韩一区精品视频| 精品国产第一福利网站| 99国产精品自拍| 老司机免费视频一区二区三区| 国产一区视频在线观看免费| 日韩成人在线看| 日韩亚洲在线| 在线中文字幕播放| 视频一区在线视频| 精品国产99| 视频一区日韩精品| 欧美一区二区三区高清视频| 日韩va欧美va亚洲va久久| 日韩中文欧美| 久久99精品久久久久久园产越南 | 影视先锋久久| 国产一区二区三区黄网站| 视频一区二区中文字幕| 精品一区二区三区四区五区| 免费一区二区视频| 97se综合| 国语对白精品一区二区| 日本a级不卡| 久久国产高清| 亚洲三级在线| 欧美日韩国产免费观看视频| 国产精品视频一区二区三区四蜜臂 | 国产乱论精品| 今天的高清视频免费播放成人| 国产精品久久久久久久免费软件| 日本欧美在线看| 亚洲男女自偷自拍| 在线综合亚洲| 亚洲欧美久久久| 欧美肉体xxxx裸体137大胆| 国产精品成久久久久| 久久精品一本| 电影91久久久| 国产福利片在线观看| 日韩欧美一区二区三区免费看| 不卡一区2区| 国产精品腿扒开做爽爽爽挤奶网站| 久久精品 人人爱| 97精品视频在线看| 国产精品日韩精品在线播放 | 麻豆国产精品一区二区三区| 国产精品久久久久久久久久白浆| 国产精品一区二区精品| 欧美成人aaa| 另类专区亚洲| 在线综合视频| 日韩福利视频一区| 久久不卡日韩美女| www.51av欧美视频| 日韩精品水蜜桃| 免费中文字幕日韩欧美| 在线成人直播| 日欧美一区二区| 精品一区视频| 在线日韩欧美| 久久精品福利| 日韩综合精品| 亚洲天堂日韩在线| 欧美色图国产精品| 久色成人在线| 国产精品a级| 亚洲大片在线| 国产精品视频一区二区三区综合| 欧美丰满日韩| 亚洲主播在线| 欧美激情麻豆| 国产一区久久| 美女精品久久| 午夜在线精品| 成人影视亚洲图片在线| 亚洲一区国产| 91亚洲国产成人久久精品| 91久久在线| av最新在线| 国产精品香蕉| 免费欧美日韩| 群体交乱之放荡娇妻一区二区| 日韩av中文字幕一区| 国内不卡的一区二区三区中文字幕| 麻豆精品久久久| 日韩国产高清在线| 久久av一区二区三区| 久久久一二三| 国产欧美成人| 亚洲精品精选| 欧美成人亚洲| 色爱综合网欧美| 日韩国产欧美一区二区三区| jiujiure精品视频播放| 成人在线免费观看网站| 亚洲18在线| 亚洲一区导航| 丝袜美腿亚洲一区二区图片| av资源亚洲| 麻豆理论在线观看| 成人国产精品久久| 国产精品一级| 蜜臀精品久久久久久蜜臀| 伊人久久婷婷| 人人香蕉久久| 日韩中文在线播放| 亚洲黄色中文字幕| 欧美aa在线观看| 成人污污视频| 日韩精品不卡一区二区| аⅴ资源天堂资源库在线| 日韩中文欧美|