作者eight0 (人类)
看板Ajax
标题Re: [ js ] chrome 的 Math.random() 好固定的感觉
时间Mon Jun 26 20:41:44 2017
这是演算法问题,和 JS 无关。这个做法是完全错误的,即使改成了 1 : -1 也一样。
你给的比较方法为「比较两元素,有 50% 机率左边比较大,50% 机率右边比较大」
就来试试,用在简单的排序法上(两两互相比较)︰
若你有两个元素 [A, B],A 在第一个位置的机率是 50% 吗?
画成树状图(A:B 意思是 A, B 相比较)︰
A:B
↙ ↘
A大 B大
位置 1 2
每次分岔都是各 50% 的机率。用你的函式,的确是可以达成
「50% 的机率 A 会在第一个」
但是若有三个元素 [A, B, C]︰
A:B
↙ ↘
A大 B大
↙ ↘
A:C A:C
↙ ↘ ↙ ↘
A大 C大 A大 C大
位置 1 2 2 3
A 有 25% 的机率是第排在一个、50% 的机率是第二个、25% 的机率是第三个。
这结果应该不能称作「够随机」吧?明明资料才 3 个而已。
根据排序方法的不同,画出来的树状图也不同,上面画的树状图只是直觉的把三样元素
比较後排序,而浏览器所选择的排序法也许不同,产生的结果可能更「不够随机」了。
如果想找更深入的讨论或数学证明,可以 google: sort with random comparator
※ 引述《art1 (人,原来不是人)》之铭言:
: google 後有看到 google 宣称已经修复不够随机的问题了,不知道问题出在哪
这是指什麽不够随机?连结?
: 难道会是 portable 版本的问题吗?
为什麽会觉得这问题和 portable 版本有关?是 portable 版才有的现象吗?
另外,推文提到的「不可预料」是指「无法预料会得到什麽结果」,
换句话说,就算程式没有按照你预想的方向走也是正常状况(甚至当机)。
--
▉▏
▉▏
◢ ▊▎ ◣
◤ ▄▆▄ ◥
◥ ◥ ◤ ◤
▄ ▄
--
※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 36.225.58.78
※ 文章网址: https://webptt.com/cn.aspx?n=bbs/Ajax/M.1498480907.A.A27.html
1F:推 art1: 我都是用portable版的,没装过安装版,所以怀疑是否因此影响 06/26 22:30
3F:推 oToToT: 大多应该都是merge或quick吧,你乱搞大小感觉他也会乱搞 06/26 23:49
4F:→ oToToT: 顺序,而且随机性不高 06/26 23:49