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

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

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

瀏覽:190日期: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久久,三上悠亚国产精品一区二区三区
爽好久久久欧美精品| 亚洲人www| 久久a爱视频| 国产精品久久久久9999高清| 蜜臀精品久久久久久蜜臀| 99视频+国产日韩欧美| 精品中文字幕一区二区三区av| 成人久久久久| 国产99精品| 亚洲女同一区| 男人天堂欧美日韩| 国产模特精品视频久久久久| 狠狠久久婷婷| 黑丝一区二区三区| 最新亚洲一区| 亚洲一区二区三区高清| 一区二区三区四区精品视频| 日本a级不卡| 久久久亚洲欧洲日产| 国产黄色精品| 97国产成人高清在线观看| 九九色在线视频| 精品在线播放| 日本综合精品一区| 久久a爱视频| 久久久久久久久久久9不雅视频| 蜜桃成人精品| 亚洲激情偷拍| 免费黄网站欧美| 国产麻豆一区二区三区精品视频| 久久精品国产999大香线蕉| 岛国av在线网站| 亚洲成人一区| 综合在线一区| 清纯唯美亚洲综合一区| 精品三级久久久| 五月天久久久| 欧美精品中文字幕亚洲专区| 欧美xxxx中国| 亚洲欧美日韩专区| 国产亚洲字幕| 日韩av福利| 亚洲人成网站在线在线观看| 国产精品久久久久久妇女| 色婷婷狠狠五月综合天色拍| 久久成人一区| 六月丁香综合在线视频| 久久人人97超碰国产公开结果| 综合亚洲自拍| 精品国产中文字幕第一页| 国产高清一区二区| 国产精品一区二区三区av麻| 国产麻豆久久| 日韩av在线播放中文字幕| 国产精品久久久久久久免费观看| aⅴ色国产欧美| 欧美激情91| 日韩一区二区久久| 国产精品成人国产| 欧美日韩精品一本二本三本| 国产日韩欧美一区二区三区| 婷婷成人在线| 国产精品一区二区精品视频观看 | 在线人成日本视频| 国产精品女主播一区二区三区| 国产精品天天看天天狠| 激情欧美一区| 国产精品网站在线看| 99re国产精品| 超碰成人av| 国产欧美日韩精品一区二区三区| 好看的亚洲午夜视频在线| 日本亚洲不卡| 国产伊人精品| 精品在线网站观看| 日本在线成人| 欧美日韩视频一区二区三区| 国产aⅴ精品一区二区三区久久| 在线精品福利| 久久一区二区中文字幕| 久久99蜜桃| 婷婷综合福利| 午夜免费一区| 高潮一区二区| 欧美久久亚洲| 亚洲三区欧美一区国产二区| av一区二区高清| 亚洲欧美网站| 久久国产中文字幕| 国产一区二区精品福利地址| 欧美日韩一区二区三区四区在线观看| 亚洲一区免费| 免费不卡中文字幕在线| 97精品国产福利一区二区三区| 国产精品99精品一区二区三区∴| 一本一道久久a久久精品蜜桃| 色婷婷狠狠五月综合天色拍| 欧美一区不卡| 精品一区视频| 欧美日韩亚洲一区在线观看| 亚洲人亚洲人色久| 蜜桃视频在线观看一区| zzzwww在线看片免费| 国产精品美女午夜爽爽| 日韩在线网址| 免费精品视频在线| 免费中文字幕日韩欧美| 最新亚洲激情| 中文精品在线| 亚洲国产日韩欧美在线| 欧美 日韩 国产精品免费观看| 日韩一区电影| 国产黄大片在线观看| 久久精品免费看| 国产一区二区亚洲| 精品国产aⅴ| 欧美a级一区二区| 国产亚洲人成a在线v网站| 香蕉久久久久久| 午夜电影一区| 欧美久久亚洲| 久久久精品区| 国内精品美女在线观看| 久久成人高清| 精品一区二区三区中文字幕视频| 老司机精品在线| 精品国产午夜| 成人台湾亚洲精品一区二区| 国产中文在线播放| 亚洲伦乱视频| 欧美影院三区| 亚洲色诱最新| 亚洲欧美视频| 日韩三级一区| 国产精品密蕾丝视频下载| 精品理论电影在线| 天堂中文av在线资源库| 久久精品123| 在线一区欧美| 日本免费一区二区视频| 国产精品久久久久久久久久白浆| 丰满少妇一区| 国内精品福利| 日日摸夜夜添夜夜添国产精品| 国产精品一区二区av交换| 国产一区二区三区久久| 精品免费av在线| 亚洲福利一区| 亚洲免费高清| 一区二区三区四区日韩| 欧美日韩一区二区三区不卡视频 | 国产午夜久久av| 91嫩草精品| 免费一级欧美片在线观看网站| 麻豆国产91在线播放| 高清一区二区| 欧美精品一二| 男女男精品视频网| 日韩国产欧美在线播放| 国产极品嫩模在线观看91精品| 麻豆视频在线观看免费网站黄| 欧美日韩国产一区二区三区不卡| 综合激情视频| 久久只有精品| 红桃视频国产一区| 久久精品99国产精品| 日本不卡免费高清视频在线| 日韩高清中文字幕一区二区| 美女久久一区| 免费日韩一区二区三区| 久久激情一区| 日韩国产欧美在线视频| 久久青青视频| 亚洲精品影院在线观看| 国产成人精品免费视| 亚洲深夜av| 久久久免费人体| 亚洲一区二区动漫| 精品久久在线| 蜜臀va亚洲va欧美va天堂| 精品久久视频| 久久亚洲美女| 国产精品地址| 欧美日韩在线观看视频小说| 亚洲欧美久久精品| 国产白浆在线免费观看| 亚洲91网站| 成人久久一区| 国产精品一区二区三区四区在线观看| 久久久久一区| 国产精品一区二区三区四区在线观看| 99久精品视频在线观看视频| 青草综合视频| 黄色日韩在线| 成人在线视频区| 天堂精品久久久久| 免费久久精品| 国产精品毛片久久久| 三级一区在线视频先锋| 国产中文在线播放|