簡體   English   中英

從 Math.random 中減去的目的是什么?

[英]What is the purpose of subtracting from Math.random?

我正在瀏覽 javascript.info 並為數組方法做練習任務。 這個是“隨機排列數組”,說明是:

編寫 function shuffle(array) 來打亂(隨機重新排序)數組元素。

我無法弄清楚,所以我查了一下,但現在我很難理解它。 .5 - Math.random行中的“.5 -”有什么作用?

let arr = [1, 2, 3];

function shuffle(array) {
    return arr.sort((a, b) => .5 - Math.random())
}
console.log(shuffle(arr))

.sort回調將遍歷數組的元素並根據回調返回的值對它們進行排序。 如果返回負數, a將排在b之前 - 如果返回正數, b將排在a之前。

Math.random()返回一個介於 0 和 1 之間的數字。如果從 0.5 中減去它,則會得到一個介於 -0.5 和 +0.5 之間的隨機數。 這樣做

(a, b) => .5 - Math.random()

是一種讓回調在 50% 的時間返回正數和 50% 的時間返回負數的方法,並且會在一定程度上隨機打亂數組。

也就是說,以這種方式“排序”會產生有偏差的結果 使用更好的算法

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM