首页 > 解决方案 > 为什么 sort() 使用 Math.random() 与使用数字不同?

问题描述

我使用相同的数字范围有两个不同的结果。对不起,如果它很明显,我是一个完全的初学者,找不到这个答案。

下面对数组进行洗牌。

(function(array) {
    array.sort(() => 0.5 - Math.random());
    console.log(array);
})([0, 1, 2, 3, 4, 5, 6, 7, 8, 9])
// Output: [Shuffled array]

但是,如果我手动写一个介于 -0.5 和 0.5 之间的随机数,我无法对其进行随机播放。为什么??

(function(array) {
    array.sort(() => 0.2145467);
    console.log(array);
})([0, 1, 2, 3, 4, 5, 6, 7, 8, 9])
// Output: [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]

标签: javascriptarrayssortingrandomshuffle

解决方案


回调函数的返回值可以是以下三项之一:

  • 小于 0(表示一个小于另一个)
  • 0(表示值相同)
  • 大于 0(意味着它们是相反的)

如果您返回一个固定数字,那么排序顺序将是不变的。

如果您返回一个0.5 -介于 0 和 1 之间的随机数,那么它将是三个中的任意一个。


推荐阅读