python - 使用 Python 进行准随机化

标签 python random

这就是问题所在:我尝试在两个元素之间随机选择 n 次(比如 [0,1] -> 0 或 1),我的最终列表将有 n/2 [0] + n/2 [ 1].我倾向于得到这种结果:[0 1 0 0 0 1 0 1 1 1 1 1 1 0 0,直到 n]:问题是我不想连续 4 或 5 次相同的数字所以经常。我知道我可以使用准随机化程序,但我不知道该怎么做(我使用的是 Python)。

最佳答案

为了保证零和一的数量相同,您可以生成一个包含 n/2 个零和 n/2 个一的列表,并使用 random.shuffle 对其进行随机排序。

对于小 n,如果您对结果通过您的验收标准不满意(例如没有太多连续相等的数字),请再次洗牌。请注意,这样做会减少结果的随机性,而不是增加它。

对于较大的 n,使用此方法找到符合您标准的结果将花费很长时间(因为大多数结果将失败)。相反,您可以使用这些规则一次生成一个元素:

  • 如果您已经连续生成 4 个 1,则下一个数字必须为零,反之亦然。
  • 否则,如果您需要生成 x 个 1 和 y 个 0,则下一个数字为 1 的概率为 x/(x+y)。

关于python - 使用 Python 进行准随机化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4630723/

相关文章:

python - 从位图字体图像中提取字形数据的工具

math - 为什么math.random(999999999999)在Lua中返回1?

java - 如何在 Java 中的数组中存储随机且唯一的数字?

batch-file - 在事件目录/本地系统中创建随机用户的批处理脚本

python - while 循环比 for 循环快 1000 倍以上?

python - 对间隔不均匀的数据使用 shift()

python - Pandas:读取多字符分隔符 csv 文件?

python - 正则表达式中的可选括号

php - 测试重复的返回值

ios - 当我的分数增加时调用随机 SKAction?