gpt4 book ai didi

javascript - Math.random() * i | 是什么意思? 0是什么意思?

转载 作者:行者123 更新时间:2023-11-30 07:21:54 26 4
gpt4 key购买 nike

var lst = [/*List of items*/];
for (var i = 10; i > 0; i--) {
lst.appendChild(lst[Math.random() * i | 0]);
}

为什么会有“|”在索引中?此函数是否打乱列表“lst”?

最佳答案

bitwise OR operator |将其输入转换为 32 位二进制补码。这通常用于向零快速舍入(比 Math.trunc() 更快):

console.log(1.1 | 0); // 1
console.log(1.9 | 0); // 1
console.log(-1.1 | 0); // -1
console.log(-1.9 | 0); // -1

表达式 Math.random() * i | 0 因此等于 Math.trunc(Math.random() * i) 并返回 0 到 i - 1 范围内的伪随机整数。

PS:双位取反~~效果一样。请记住,应用按位运算符可有效地将整数操作数的范围从 Number.MAX_SAFE_INTEGER (2⁵³ - 1) 缩小到最大 32 位二进制补码 (2³¹ - 1)。

关于javascript - Math.random() * i | 是什么意思? 0是什么意思?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37472768/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com