看板 Ajax 關於我們 聯絡資訊
不確定這問題該在哪一板問 同樣的程式碼在 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 ※ 文章網址: https://www.ptt.cc/bbs/Ajax/M.1498378138.A.31D.html
s25g5d4: sort 不是這樣用的... 06/25 17:56
eight0: 我猜你想找的東西是 array shuffle 06/25 19:12
bibo9901: 去讀sorting的演算法 這做法是錯的 06/25 22:26
cybelia: 這段程式說的是... dataArray要有大約一半排在前面, 06/26 00:34
art1: 看了別人對 -1、0、1的解釋,改成 1: -1 就正常了 06/26 00:34
cybelia: 大約一半排在後面,但沒有要求這一半裡面要怎麼排啊 ?_? 06/26 00:35
cybelia: 這樣跟文中描述的用途好像不太一樣... 06/26 00:35
art1: 是想讓陣列裡面的資料順序不要一直重複,是不太懂為什麼在 06/26 00:39
art1: chrome 的結果跟 firefox 有明顯差距,只好當成sort的實作不 06/26 00:40
art1: 一樣,在找到改成 -1 的解法之前,也用了另一個打散順序的方 06/26 00:41
art1: 式,雖然那個方式的程式碼比較多一些 06/26 00:41
cybelia: js的排序沒有定義相同時怎麼辦,這樣寫如果遇到sort實作 06/26 00:57
cybelia: 是stable時,會蠻重覆的... 06/26 00:57
cybelia: 當然ff跟chrome當前版本(印象中)都unstable啦,但依賴實 06/26 00:59
cybelia: 作的特性不會感覺毛毛的嗎... O_O 06/26 00:59
LPH66: 用 sort 洗牌只有一個方法是正確的 06/26 05:40
LPH66: 就是給每個元素一個亂數值, 然後依照那個亂數值排序 06/26 05:41
LPH66: 用隨機傳比較結果的問題在於回傳結果是不一致的 06/26 05:41
LPH66: 同樣兩個元素可能這一次是 1 下一次是 -1 06/26 05:41
LPH66: 也就是不符合所謂的「全序性」, 會排出什麼是不可預料的 06/26 05:42
art1: 就是想要那個不可預料,但chrome卻一直變成可預料... 06/26 07:22
cybelia: 我想LPH大大的不可預料指的不是隨機吧....XD 06/26 19:07
xdraculax: 只有我覺得原PO的隨機想法其實沒問題嗎 @@ 06/26 21:13
s25g5d4: 只有你 06/26 21:21
ssccg: 用sort不會是隨機分布,每個元素的最終位置分布的機率會受 06/26 21:31
ssccg: 開始位置影響,而且用sort複雜度還比較高,大有問題 06/26 21:32
ssccg: 更不用說實際上還會受到不同瀏覽器的sort實作影響 06/26 21:34
ssccg: https://goo.gl/p0Mo Firefox也一樣不均,只是沒那麼明顯 06/26 21:41