作者art1 (人,原来不是人)
看板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
※ 文章网址: https://webptt.com/cn.aspx?n=bbs/Ajax/M.1498378138.A.31D.html
1F:推 s25g5d4: sort 不是这样用的... 06/25 17:56
2F:推 eight0: 我猜你想找的东西是 array shuffle 06/25 19:12
3F:→ bibo9901: 去读sorting的演算法 这做法是错的 06/25 22:26
4F:→ cybelia: 这段程式说的是... dataArray要有大约一半排在前面, 06/26 00:34
5F:→ art1: 看了别人对 -1、0、1的解释,改成 1: -1 就正常了 06/26 00:34
6F:→ cybelia: 大约一半排在後面,但没有要求这一半里面要怎麽排啊 ?_? 06/26 00:35
7F:→ cybelia: 这样跟文中描述的用途好像不太一样... 06/26 00:35
8F:→ art1: 是想让阵列里面的资料顺序不要一直重复,是不太懂为什麽在 06/26 00:39
9F:→ art1: chrome 的结果跟 firefox 有明显差距,只好当成sort的实作不 06/26 00:40
10F:→ art1: 一样,在找到改成 -1 的解法之前,也用了另一个打散顺序的方 06/26 00:41
11F:→ art1: 式,虽然那个方式的程式码比较多一些 06/26 00:41
12F:→ cybelia: js的排序没有定义相同时怎麽办,这样写如果遇到sort实作 06/26 00:57
13F:→ cybelia: 是stable时,会蛮重覆的... 06/26 00:57
14F:→ cybelia: 当然ff跟chrome当前版本(印象中)都unstable啦,但依赖实 06/26 00:59
15F:→ cybelia: 作的特性不会感觉毛毛的吗... O_O 06/26 00:59
16F:推 LPH66: 用 sort 洗牌只有一个方法是正确的 06/26 05:40
17F:→ LPH66: 就是给每个元素一个乱数值, 然後依照那个乱数值排序 06/26 05:41
18F:→ LPH66: 用随机传比较结果的问题在於回传结果是不一致的 06/26 05:41
19F:→ LPH66: 同样两个元素可能这一次是 1 下一次是 -1 06/26 05:41
20F:→ LPH66: 也就是不符合所谓的「全序性」, 会排出什麽是不可预料的 06/26 05:42
21F:→ art1: 就是想要那个不可预料,但chrome却一直变成可预料... 06/26 07:22
22F:→ cybelia: 我想LPH大大的不可预料指的不是随机吧....XD 06/26 19:07
23F:→ xdraculax: 只有我觉得原PO的随机想法其实没问题吗 @@ 06/26 21:13
24F:推 s25g5d4: 只有你 06/26 21:21
25F:→ ssccg: 用sort不会是随机分布,每个元素的最终位置分布的机率会受 06/26 21:31
26F:→ ssccg: 开始位置影响,而且用sort复杂度还比较高,大有问题 06/26 21:32
27F:→ ssccg: 更不用说实际上还会受到不同浏览器的sort实作影响 06/26 21:34