如何利用Python的局限性创造一个真正不可能的条件';这是随机的吗?

如何利用Python的局限性创造一个真正不可能的条件';这是随机的吗?,python,random,probability,mersenne-twister,Python,Random,Probability,Mersenne Twister,因此,我试图找到一种方法,根据随机生成得到一个非常不可能的条件。为了更好地解释,这里有一个例子: 来自随机导入的* 导入ctypes random1=[randint(0,2**32-1)表示范围内的j(10000000)] 尽管如此: random2=[randint(0,2**32-1)表示范围内的i(10000000)] 如果设置(随机数2)=设置(随机数1): MessageBox=ctypes.windell.user32.MessageBoxW MessageBox(无,'匹配','

因此,我试图找到一种方法,根据随机生成得到一个非常不可能的条件。为了更好地解释,这里有一个例子:

来自随机导入的
*
导入ctypes
random1=[randint(0,2**32-1)表示范围内的j(10000000)]
尽管如此:
random2=[randint(0,2**32-1)表示范围内的i(10000000)]
如果设置(随机数2)=设置(随机数1):
MessageBox=ctypes.windell.user32.MessageBoxW
MessageBox(无,'匹配','输出',0)
打破
由于mersene twister的局限性和功能性,以及其数字分布的一致性,我们很可能会在两个列表中生成1000万个数字,当顺序无关紧要且删除重复项时,它们将经常匹配

这并不罕见,但以下代码稍微好一些:

来自随机导入的
*
导入ctypes
尽管如此:
如果random()==0.0:
MessageBox=ctypes.windell.user32.MessageBoxW
MessageBox(无,'匹配','输出',0)
打破
这种情况发生的可能性要小得多,但由于单核性能巨大,在今天相当普遍,它仍然很容易在1天内获得匹配。概率是1/2^56,考虑到mersenne twister的局限性,这不太可能发生

有没有一种好方法可以利用python中的随机性编写一个真正不太可能发生的条件?。。也就是说,需要一年或更长的时间才能破解


或者我想转向散列匹配。。。创建一个随机SHA256散列,然后生成随机大数据,并通过SHA256散列来尝试匹配散列。但是我不知道在这种情况下观察概率的方法。

你可能对几何分布感兴趣,它计算第一次成功之前的失败次数(有些作品说它计算这个数字加上第一次成功)。例如,一行中没有故障的概率为1/2,一行中的一个故障为1/4,两个故障为1/8,三个故障为1/16,依此类推。如果我们用一个零位表示失败,一个一位表示成功,这意味着有更多的零位,那么随机生成那么多零位的可能性就会降低。作为“不可能事件”的一个示例,您可以将一行中的30个或更多零位视为不可能

Mersenne捻线器和伪随机数生成器(PRNG)通常具有周期。该循环的大小影响PRNG在一行中可以生成多少零位。例如,Mersenne Twister有一个2^19937-1个数字的循环,因此在理论上,它可以循环通过除全零状态之外的所有状态。因此,它可以在一行中生成不超过
19937*2
零位。(如果我们将Mersenne Twister视为一次输出单个位,而不是32位。)


这与(RNG)相反,RNG没有循环,但仍然生成随机行为数。如果它生成的数字是独立的、统一的和随机的位,那么不知道RNG最多可以随机生成多少零位。在Python的
secrets
模块中可以找到使用不确定性的RNG的一个示例,特别是
secrets.randbower()
。(在实践中,这个模块可能会使用PRNG,但可能会不时从不确定的来源收集“熵”,因此在实践中,模块的RNG是不确定的。)

你的帖子非常混乱,我真的不知道你在寻找什么,但如果你想要“更好”的随机性。。。使用SystemRandom而不是MT?它将委托给系统的CSPRNG,因此应尽可能随机”。默认情况下,
secrets
的随机选择器使用它,这样您就可以使用
secrets.randbits
secrets.randbower
来简化操作。谢谢,我不知道它的存在。FWIW您也可以调用
os.urandom(n)
n是您想要的随机字节数(一次可以请求的字节数可能有限制,我知道,例如
getentropy(2)
一次只能检索256个字节,但我不知道
os.uradom
是否循环)这将直接查询OS的cSPNG,中间没有任何抽象。然后你可以使用<代码>数组。数组< /COD>将这堆随机字节解析成随机整数。很好的答案,正是我要找的解释,谢谢!