如何预测随机数

问题描述 投票:0回答:1

如果我有这样的代码:

import random
for i in range(10):
    print(randint(0,1))

现在我知道前 10 个输出,如何预测第 11 个输出?我知道这是可能的,我怎样才能找到它?

python random
1个回答
-1
投票

预测 Python random.randint 函数的下一个输出实际上是不可能的,因为它生成伪随机数。这些数字只是随机出现,但由底层算法和种子值(通常基于系统时间)确定。生成的每个数字都独立于之前的数字,每个可能结果的概率相等。如果不知道伪随机数生成器 (PRNG) 的内部状态(包括种子),则无法预测未来的输出。 PRNG 的设计确保了序列的不可预测性,除非使用 random.seed 手动设置种子,使得序列可再现,但在没有该种子信息的情况下仍然不可预测。但如果你真的想实现这一点,你需要通过显式设置来控制种子。

import random

# Set the seed
random.seed(12345)

# Generate some random numbers
print(random.randint(0, 100))
print(random.randint(0, 100))

# Reset the seed
random.seed(12345)

# Generate the same numbers again
print(random.randint(0, 100))
print(random.randint(0, 100))
© www.soinside.com 2019 - 2024. All rights reserved.