javascript - 偏置随机 boolean 值的优雅方式

标签 javascript algorithm random boolean

我想在 JavaScript 中创建一个随机 boolean 值,但我想考虑之前的值。如果前一个值为真,我希望下一个值更有可能为真。目前我得到了这个(这是在闭包的上下文中 - goUplastGoUp 是包含范围的局部变量):

function setGoUp() {
    goUp = getRandomBoolean();

    if(lastGoUp) {
        goUp = getRandomBoolean() || goUp;
    }
    else {
        goUp = getRandomBoolean() && goUp;
    }
    lastGoUp = goUp;
}

所以,算法是这样的:

  1. 获取一个随机 boolean 值
  2. 如果上次调用的随机 boolean 值是 True:

    a) 得到另一个随机 boolean 值,将这两个放在一起

    b) 否则获取另一个随机 boolean 值,并将这些放在一起。

我相信这个算法可以被简化。我想知道如何做:

if(lastGoUp && goUp) {
    goUp = goUp * (getRandomBoolean() || goUp);
}

但这看起来真的很脏。

这个算法也有一个问题,这意味着我只能将再次获得相同 boolean 值的机会加倍——我不能轻易地调整它。有什么想法吗?

最佳答案

您应该定义所需的分布,但也许您正在寻找以下内容?

if (lastGoUp) {
    goUp = Math.random() < 0.8;
} else {
    goUp = Math.random() < 0.2;
}

关于javascript - 偏置随机 boolean 值的优雅方式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3645964/

相关文章:

java - 未生成新随机数

javascript - 选择下拉菜单项时自动从我的数据库填写文本区域字段

Javascript 循环 - 第二个变量不显示

javascript - GridStack-设置静态网格

python - 在巨大的离散宇宙中寻找最优值的算法

c++ - 合并两个排序列表出现运行时错误

c++ - 从随机数组输出最大最小值和平均值?

excel - 如何从范围中选择随机单元格?

javascript - 如何选择 jQuery 集合中的第 n 个 jQuery 对象?

algorithm - 如何最佳解决这个问题?