如何在python 3中生成n个随机数? n是待确定的变量。优选自然数(整数> 0), 我发现的所有答案都是从一个范围中随机整数,但我不想从一个范围生成数字。 (除非范围是0到无穷大)
答案 0 :(得分:7)
计算机世界中没有无限。您可以使用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 and 3.X中sys.maxint
和sys.maxsize
之间差异的详细信息:
删除了sys.maxint常量,因为不再有 限制整数的值。但是,sys.maxsize可以用作 大于任何实际列表或字符串索引的整数。它符合 实现的“自然”整数大小通常是相同的 作为同一平台上以前版本中的sys.maxint(假设为 相同的构建选项)。
答案 1 :(得分:2)
我认为您可能需要重新考虑一下您正在尝试使用您想要的随机数。特别是,您从哪个分布中抽取数字? 如果你希望你的随机数均匀分布(选择每个数字的概率相等),你就不能:你需要无限量的记忆(或时间,或两者兼而有之)。
当然,如果您允许非均匀分布,这里有一些介于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]
答案 2 :(得分:-1)
这里我们的内存有限,因此我们可以使随机数达到系统可以达到的最大值。只需将所需的n位数字放在条件中即可获得所需的结果。例如,我尝试使用6位随机数。一个可以根据要求尝试。希望这能在一定程度上解决您的问题。
导入系统
来自随机导入*
对于我在范围内(sys.maxsize): 打印(randint(0,9),randint(0,9),randint(0,9),randint(0,9),randint(0,9),randint(0,9),sep ='')< / p>