[ js ] chrome 的 Math.random() 好固定的感觉

楼主: art1 (人,原来不是人)   2017-06-25 16:08:55
不确定这问题该在哪一板问
同样的程式码在 firefox 上跑,还没遇过两次都一样的结果
今天第一次用 chrome portable 测试,不管怎么重新整理第一笔资料永远都是同一笔
第二笔到第四笔则都是那几笔资料在那边轮流,更后面的就懒得观察了
function rdm () {
return (Math.random() > 0.5 ? 1 : 0)
}
dataArray.sort(rdm)
google 后有看到 google 宣称已经修复不够随机的问题了,不知道问题出在哪
把中断点设在这两个地方,也看不出来为什么结果会不够随机
明明资料才 125 个而已,难道会是 portable 版本的问题吗?
作者: s25g5d4 (function(){})()   2017-06-25 17:56:00
sort 不是这样用的...
作者: eight0 (欸XD)   2017-06-25 19:12:00
我猜你想找的东西是 array shuffle
作者: bibo9901 (function(){})()   2017-06-25 22:26:00
去读sorting的算法 这做法是错的
作者: cybelia (@@)   2017-06-26 00:34:00
这段程式说的是... dataArray要有大约一半排在前面,
楼主: art1 (人,原来不是人)   2017-06-26 00:34:00
看了别人对 -1、0、1的解释,改成 1: -1 就正常了
作者: cybelia (@@)   2017-06-26 00:35:00
大约一半排在后面,但没有要求这一半里面要怎么排啊 ?_?这样跟文中描述的用途好像不太一样...
楼主: art1 (人,原来不是人)   2017-06-26 00:39:00
是想让阵列里面的资料顺序不要一直重复,是不太懂为什么在chrome 的结果跟 firefox 有明显差距,只好当成sort的实作不一样,在找到改成 -1 的解法之前,也用了另一个打散顺序的方式,虽然那个方式的程式码比较多一些
作者: cybelia (@@)   2017-06-26 00:57:00
js的排序没有定义相同时怎么办,这样写如果遇到sort实作是stable时,会蛮重复的...当然ff跟chrome当前版本(印象中)都unstable啦,但依赖实作的特性不会感觉毛毛的吗... O_O
作者: LPH66 (-6.2598534e+18f)   2017-06-26 05:40:00
用 sort 洗牌只有一个方法是正确的就是给每个元素一个乱数值, 然后依照那个乱数值排序用随机传比较结果的问题在于回传结果是不一致的同样两个元素可能这一次是 1 下一次是 -1也就是不符合所谓的“全序性”, 会排出什么是不可预料的
楼主: art1 (人,原来不是人)   2017-06-26 07:22:00
就是想要那个不可预料,但chrome却一直变成可预料...
作者: cybelia (@@)   2017-06-26 19:07:00
我想LPH大大的不可预料指的不是随机吧....XD
作者: xdraculax (首席怪叔叔)   2017-06-26 21:13:00
只有我觉得原PO的随机想法其实没问题吗 @@
作者: s25g5d4 (function(){})()   2017-06-26 21:21:00
只有你
作者: ssccg (23)   2017-06-26 21:31:00
用sort不会是随机分布,每个元素的最终位置分布的机率会受开始位置影响,而且用sort复杂度还比较高,大有问题更不用说实际上还会受到不同浏览器的sort实作影响https://bost.ocks.org/mike/shuffle/compare.htmlhttps://goo.gl/p0Mo Firefox也一样不均,只是没那么明显

Links booklink

Contact Us: admin [ a t ] ucptt.com