如何在python 3中生成n个随机数?n是一个待定变量。最好是自然数(大于0的整数),我找到的所有答案都是从一个范围中随机取整数,但是我不想从一个范围中生成数字。(除非范围是0到无穷大)
n3ipq98p1#
套用维特根斯坦的话,你的机器的极限就是你的语言的极限。iidoEe.在计算机/计算世界里没有无限这样的东西。然而,关于数据结构的最大支持大小,您可以使用sys.maxsize(在Python 2中为X1 M1 N1 X)以获得例如可用作最大列表索引或字符串长度等的限制。您也可以将其传递给random.randint函数,以获得任意的非常大的随机整数,但您仍然可以根据计算机的处理能力来增加该阈值。
sys.maxsize
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.maxint和sys.maxsize的区别的更多信息:sys.maxint常量被删除,因为不再限制整数值。但是,sys.maxsize可以用作大于任何实际列表或字符串索引的整数。它符合实现的“自然”整数大小,通常与同一平台上以前版本中的sys.maxint相同(假设构建选项相同)。
sys.maxint
fnvucqvd2#
我认为你可能需要重新考虑你想要的随机数是什么。特别是,你从什么样的分布中抽样?如果你想让你的随机数均匀分布(每个数字被选中的概率相等),你不能:你需要无限的内存(或时间,或两者)。当然,如果你考虑到非均匀分布,这里有一些随机数,介于1和(大致)我的系统允许的最大float之间,但是由于这些数字的表示方式,存在一些差距,你可能会觉得“大”数被选中的概率福尔斯得比你希望的要快......
float
In [254]: [int(1./random.random()) for i in range(10)] Out[254]: [1, 1, 2, 1, 1, 117, 1, 3, 2, 6]
62o28rlo3#
这里我们有内存限制,所以我们可以把随机数取到系统能达到的最大值,只要把你想要的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='')
3条答案
按热度按时间n3ipq98p1#
套用维特根斯坦的话,你的机器的极限就是你的语言的极限。iidoEe.在计算机/计算世界里没有无限这样的东西。然而,关于数据结构的最大支持大小,您可以使用
sys.maxsize
(在Python 2中为X1 M1 N1 X)以获得例如可用作最大列表索引或字符串长度等的限制。您也可以将其传递给random.randint
函数,以获得任意的非常大的随机整数,但您仍然可以根据计算机的处理能力来增加该阈值。为了生成多个随机数,可以使用如下列表解析:
有关python 2.X和3.X中
sys.maxint
和sys.maxsize
的区别的更多信息:sys.maxint
常量被删除,因为不再限制整数值。但是,sys.maxsize
可以用作大于任何实际列表或字符串索引的整数。它符合实现的“自然”整数大小,通常与同一平台上以前版本中的sys.maxint
相同(假设构建选项相同)。fnvucqvd2#
我认为你可能需要重新考虑你想要的随机数是什么。特别是,你从什么样的分布中抽样?如果你想让你的随机数均匀分布(每个数字被选中的概率相等),你不能:你需要无限的内存(或时间,或两者)。
当然,如果你考虑到非均匀分布,这里有一些随机数,介于1和(大致)我的系统允许的最大
float
之间,但是由于这些数字的表示方式,存在一些差距,你可能会觉得“大”数被选中的概率福尔斯得比你希望的要快......62o28rlo3#
这里我们有内存限制,所以我们可以把随机数取到系统能达到的最大值,只要把你想要的n位数放在条件中,就可以得到你想要的结果,举个例子,我试了6位数的随机数,大家可以按照要求试一下,希望这在一定程度上解决了你的问题。