我想在JavaScript中创建一个随机 bool(boolean) 值,但我想考虑先前的值。如果先前的值为true,则我希望下一个值为true的可能性更大。目前,我已经知道了(这是在闭包的上下文中-goUp
和lastGoUp
是包含作用域的本地对象):
function setGoUp() {
goUp = getRandomBoolean();
if(lastGoUp) {
goUp = getRandomBoolean() || goUp;
}
else {
goUp = getRandomBoolean() && goUp;
}
lastGoUp = goUp;
}
因此,算法为:
a)获得另一个随机 bool(boolean) 值,并将
or
这两个一起b)否则一起获得另一个随机 bool(boolean) 值和
and
。 我确定可以简化此算法。我想知道这样做:
if(lastGoUp && goUp) {
goUp = goUp * (getRandomBoolean() || goUp);
}
但这看起来真的很脏。
该算法还存在一个问题,这意味着我只能再次获得相同的 bool(boolean) 值的机会加倍-我不能轻易对其进行调整。有任何想法吗?
最佳答案
您应该定义所需的分布,但是也许您正在寻找以下内容?
if (lastGoUp) {
goUp = Math.random() < 0.8;
} else {
goUp = Math.random() < 0.2;
}