问题很简单,但我对其中的细微差别很感兴趣。
我用我自己想出的方法生成随机布尔值:
const rand = Boolean(Math.round(Math.random()));
每当random()出现时,似乎总是有一个陷阱——它不是真正的随机,它受到了某些东西的损害,等等。所以,我想知道:
a)以上是最好的做法吗?
b)我是不是想太多了?
c)我是否考虑不足?
d)还有更好/更快/更优雅的方式吗?
(如果B和C是互斥的也有点感兴趣。)
更新
如果有影响的话,我会将其用于AI角色的移动。
您可以直接比较Math.random()和0.5,因为Math.random()的范围是[0,1)(这意味着'在0到1的范围内,包括0,但不包括1')。您可以将范围分为[0,0.5)和[0.5,1)。
var random_boolean = Math.random() < 0.5;
/ /实例
console.log(Math.random() < 0.1);//10%的概率为真
console.log(Math.random() < 0.4);//40%的概率为真
console.log(Math.random() < 0.5);//50%的概率为真
console.log(Math.random() < 0.8);//80%的概率为真
console.log(Math.random() < 0.9);//90%的概率为真
您可以直接比较Math.random()和0.5,因为Math.random()的范围是[0,1)(这意味着'在0到1的范围内,包括0,但不包括1')。您可以将范围分为[0,0.5)和[0.5,1)。
var random_boolean = Math.random() < 0.5;
/ /实例
console.log(Math.random() < 0.1);//10%的概率为真
console.log(Math.random() < 0.4);//40%的概率为真
console.log(Math.random() < 0.5);//50%的概率为真
console.log(Math.random() < 0.8);//80%的概率为真
console.log(Math.random() < 0.9);//90%的概率为真