※ 本文為 terievv 轉寄自 ptt.cc 更新時間: 2017-10-05 18:49:56
看板 Ajax
作者 標題 [js] chrome 的 Math.random() 好固定的感覺
時間 Sun Jun 25 16:08:55 2017
不確定這問題該在哪一板問
同樣的程式碼在 firefox 上跑,還沒遇過兩次都一樣的結果
今天第一次用 chrome portable 測試,不管怎麼重新整理第一筆資料永遠都是同一筆
第二筆到第四筆則都是那幾筆資料在那邊輪流,更後面的就懶得觀察了
function rdm () {
return (Math.random() > 0.5 ? 1 : 0)
}
dataArray.sort(rdm)
google 後有看到 google 宣稱已經修復不夠隨機的問題了,不知道問題出在哪
把中斷點設在這兩個地方,也看不出來為什麼結果會不夠隨機
明明資料才 125 個而已,難道會是 portable 版本的問題嗎?
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 1.172.203.48
※ 文章代碼(AID): #1PJs-QCT (Ajax)
※ 文章網址: https://www.ptt.cc/bbs/Ajax/M.1498378138.A.31D.html
※ 同主題文章:
● 06-25 16:08 ■ [ js ] chrome 的 Math.random() 好固定的感覺
06-26 20:41 ■ Re: [ js ] chrome 的 Math.random() 好固定的感覺
06-26 21:21 ■ Re: [ js ] chrome 的 Math.random() 好固定的感覺
推 : sort 不是這樣用的...1F 06/25 17:56
推 : 我猜你想找的東西是 array shuffle2F 06/25 19:12
→ : 去讀sorting的演算法 這做法是錯的3F 06/25 22:26
→ : 這段程式說的是... dataArray要有大約一半排在前面,4F 06/26 00:34
→ : 看了別人對 -1、0、1的解釋,改成 1: -1 就正常了5F 06/26 00:34
→ : 大約一半排在後面,但沒有要求這一半裡面要怎麼排啊 ?_?6F 06/26 00:35
→ : 這樣跟文中描述的用途好像不太一樣...
→ : 這樣跟文中描述的用途好像不太一樣...
→ : 是想讓陣列裡面的資料順序不要一直重複,是不太懂為什麼在8F 06/26 00:39
→ : chrome 的結果跟 firefox 有明顯差距,只好當成sort的實作不
→ : 一樣,在找到改成 -1 的解法之前,也用了另一個打散順序的方
→ : 式,雖然那個方式的程式碼比較多一些
→ : chrome 的結果跟 firefox 有明顯差距,只好當成sort的實作不
→ : 一樣,在找到改成 -1 的解法之前,也用了另一個打散順序的方
→ : 式,雖然那個方式的程式碼比較多一些
→ : js的排序沒有定義相同時怎麼辦,這樣寫如果遇到sort實作12F 06/26 00:57
→ : 是stable時,會蠻重覆的...
→ : 當然ff跟chrome當前版本(印象中)都unstable啦,但依賴實
→ : 作的特性不會感覺毛毛的嗎... O_O
→ : 是stable時,會蠻重覆的...
→ : 當然ff跟chrome當前版本(印象中)都unstable啦,但依賴實
→ : 作的特性不會感覺毛毛的嗎... O_O
推 : 用 sort 洗牌只有一個方法是正確的16F 06/26 05:40
→ : 就是給每個元素一個亂數值, 然後依照那個亂數值排序
→ : 用隨機傳比較結果的問題在於回傳結果是不一致的
→ : 同樣兩個元素可能這一次是 1 下一次是 -1
→ : 也就是不符合所謂的「全序性」, 會排出什麼是不可預料的
→ : 就是給每個元素一個亂數值, 然後依照那個亂數值排序
→ : 用隨機傳比較結果的問題在於回傳結果是不一致的
→ : 同樣兩個元素可能這一次是 1 下一次是 -1
→ : 也就是不符合所謂的「全序性」, 會排出什麼是不可預料的
→ : 就是想要那個不可預料,但chrome卻一直變成可預料...21F 06/26 07:22
→ : 我想LPH大大的不可預料指的不是隨機吧....XD22F 06/26 19:07
→ : 只有我覺得原PO的隨機想法其實沒問題嗎 @@23F 06/26 21:13
推 : 只有你24F 06/26 21:21
→ : 用sort不會是隨機分布,每個元素的最終位置分布的機率會受25F 06/26 21:31
→ : 開始位置影響,而且用sort複雜度還比較高,大有問題
→ : 更不用說實際上還會受到不同瀏覽器的sort實作影響
→ : https://bost.ocks.org/mike/shuffle/compare.html
→ : https://goo.gl/p0Mo Firefox也一樣不均,只是沒那麼明顯
→ : 開始位置影響,而且用sort複雜度還比較高,大有問題
→ : 更不用說實際上還會受到不同瀏覽器的sort實作影響
→ : https://bost.ocks.org/mike/shuffle/compare.html
→ : https://goo.gl/p0Mo Firefox也一樣不均,只是沒那麼明顯
Doing the Microsoft Shuffle: Algorithm Fail in Browser Ballot How Microsoft’s browser choice ballot fails due to a bug in their random shuffle algorithm. I show how to fix it using the Fisher-Yates shuffle. ...
--
※ 看板: terievv 文章推薦值: 0 目前人氣: 0 累積人氣: 80
回列表(←)
分享