Skip to main content
 首页 » 编程设计

python之使用 Python 进行准随机化

2025年05月04日21rubylouvre

这就是问题所在:我尝试在两个元素之间随机选择 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)。