Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 用math.random洗牌数组_Javascript_Arrays_Random - Fatal编程技术网

Javascript 用math.random洗牌数组

Javascript 用math.random洗牌数组,javascript,arrays,random,Javascript,Arrays,Random,我的函数洗牌一个数组,然后返回它是不正常工作,我不明白为什么 numbers.sort(function() { return Math.round(Math.random()); } ); return numbers; 这是可行的,但是数组中的第一项总是相同的 有人知道为什么吗?这不是分类的方法。您告诉分拣机一个值大于另一个值,而在下一个请求中,它可以更小。谁知道会发生什么事。分拣机可能需要很长时间,性能很差,或者你可能会撕破构成宇宙的结构 如果你想对一副牌进行排序,我认为最好是在所有牌之

我的函数洗牌一个数组,然后返回它是不正常工作,我不明白为什么

numbers.sort(function() { return Math.round(Math.random()); } );
return numbers;
这是可行的,但是数组中的第一项总是相同的


有人知道为什么吗?

这不是分类的方法。您告诉分拣机一个值大于另一个值,而在下一个请求中,它可以更小。谁知道会发生什么事。分拣机可能需要很长时间,性能很差,或者你可能会撕破构成宇宙的结构


如果你想对一副牌进行排序,我认为最好是在所有牌之间循环,并用随机的另一张牌交换每一张牌。这样,您就可以确定整个组只需一次迭代就可以完成。

使用Math.floor()而不是Math.round()

使用
random()
作为
排序()
函数可能会重复它。大多数
sort()
例程要求它们的函数给出输入的总顺序,以便它们能够合理地执行:@deceze我不这么认为,但是您的链接包含了他的问题的答案。感谢各位的回复@你发布的链接正是我需要的。我使用了for循环,一切都很好:)使用for循环后的可能重复不仅可以工作,而且工作速度更快:)Math.floor(Math.random())将始终返回0,而round将返回0或1,但决不会返回-1。两者都不如array.sort(function(){return.5-Math.random()})好洗牌