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

时间:2016-02-12 11:45:24

标签: python python-3.x random numbers

如何在python 3中生成n个随机数? n是待确定的变量。优选自然数(整数> 0), 我发现的所有答案都是从一个范围中随机整数,但我不想从一个范围生成数字。 (除非范围是0到无穷大)

3 个答案:

答案 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.Xsys.maxintsys.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>