为什么Python的getrandbits()永远不会产生负数?

时间:2015-12-14 05:21:03

标签: python random

我有一个使用random.Random和random.SystemRandom的python脚本。 我使用SystemRandom对象为Random对象设定种子。来自Random对象的值在模拟中使用,并打印种子值以供用户重现结果。

但是,我注意到,如果我调用getrandbits(64),它们中的任何一个都不会将数字显示为负数。它总是一个正整数。

我认为,在随机性的情况下,接近50%的时间会产生负值(通过将最左边的位设置为1)。

为什么我的期望不正确?

我的实施:

sr = random.SystemRandom()
seed = sr.getrandbits(64)
seedgen = random.Random(seed)
...
seedgen.getrandbits(64)

2 个答案:

答案 0 :(得分:1)

Python int不限于64位。它们被提升为Python longs(任意精度)

答案 1 :(得分:1)

Python的内置整数如果大于64位则变为long(任意精度整数)。您可以在Python中轻松计算2**150并获得结果1427247692705959881058285969449495136382746624LL后缀表示该类型为Python long,具有无限精度。)