【发布时间】:2011-04-08 10:33:44
【问题描述】:
我想在 JavaScript 中创建一个随机布尔值,但我想考虑以前的值。如果前一个值为真,我希望下一个值更有可能为真。目前我得到了这个(这是在闭包的上下文中 - goUp 和 lastGoUp 是包含范围的本地人):
function setGoUp() {
goUp = getRandomBoolean();
if(lastGoUp) {
goUp = getRandomBoolean() || goUp;
}
else {
goUp = getRandomBoolean() && goUp;
}
lastGoUp = goUp;
}
所以,算法是这样的:
- 获取随机布尔值
-
如果上一次调用的随机布尔值为 True:
a) 获取另一个随机布尔值,并将
or这两个放在一起b) 否则得到另一个随机布尔值和
and这些在一起。
我确信这个算法可以简化。我想知道做什么:
if(lastGoUp && goUp) {
goUp = goUp * (getRandomBoolean() || goUp);
}
但这看起来真的很脏。
这个算法还有一个问题,这意味着我只能将再次获得相同布尔值的机会加倍 - 我不能轻易调整它。有什么想法吗?
【问题讨论】:
标签: javascript algorithm random boolean