如何在 Python 3 中生成 0 到无穷大之间的 N 个随机数



如何在python 3中生成n个随机数? n 是一个待确定的变量。 最好是自然数(整数> 0(,我找到的所有答案都从某个范围内获取随机整数,但是我不想从某个范围内生成数字。(除非范围为 0 到无穷大(

套用维特根斯坦的话来说,机器的极限就是语言的极限。 也就是说,在计算机/计算世界中没有无限的东西。但是,关于数据结构支持的最大大小,您可以使用sys.maxsize(python 2中的sys.maxint(来获得该限制,例如可以用作最大列表索引或字符串长度等。您也可以将其传递给random.randint函数以获得任意非常大的随机整数,但您仍然可以根据机器的处理能力增加该阈值。

>>> import sys
>>> sys.maxsize
9223372036854775807
>>> random.randint(0,sys.maxsize)
7512061515276834201

为了生成多个随机数,您可以使用如下所示的列表推导:

>>> N = 10
>>> [random.randint(0,sys.maxsize) for _ in range(N)]
[3275729488497352533, 7487884953907275260, 36555221619119354, 1813061054215861082, 619640952660975257, 9041692448390670491, 5863449945569266108, 8061742194513906273, 1435436865777681895, 8761466112930659544]

有关 python 2.X 和 3.X 中 sys.maxintsys.maxsize 差异的更多信息:

删除了sys.maxint常量,因为不再有限制为整数的值。但是,sys.maxsize可以用作大于任何实际列表或字符串索引的整数。它符合实现的"自然"整数大小,通常相同sys.maxint在同一平台上的先前版本中(假设相同的构建选项(。

我认为您可能需要重新考虑您要用您想要的随机数做什么。特别是,您从哪个分布中抽样?如果你想让你的随机数均匀分布(每个数字被选择的概率相等(,你不能:你需要无限量的内存(或时间,或两者兼而有之(。

当然,如果您允许非均匀分布,这里有一些介于 1 和(大致(我的系统允许的最大float之间的随机数,但由于这些数字的表示方式存在差距。你可能会觉得选择"大"数字的概率比你想的要快得多......

In [254]: [int(1./random.random()) for i in range(10)]
Out[254]: [1, 1, 2, 1, 1, 117, 1, 3, 2, 6]

在这里我们有内存限制,因此我们可以将随机数增加到系统可以达到的最大值。只需将您想要的n位数字放在条件中,您就可以获得所需的结果。例如,我尝试了 6 位随机数。可以根据要求尝试。希望这在一定程度上解决了您的问题。

import sys
from random import *
for i in range(sys.maxsize):
print(randint(0,9),randint(0,9),randint(0,9),randint(0,9),randint(0,9),randint(0,9),sep='')

最新更新