假设我需要一个3位数的数字,那么它应该是这样的:
>>> random(3)
563
or
>>> random(5)
26748
>> random(2)
56
发布于 2013-03-16 02:44:11
如果您希望它是一个字符串(例如,一个10位数字的电话号码),您可以使用以下命令:
n = 10
''.join(["{}".format(randint(0, 9)) for num in range(0, n)])
发布于 2010-04-20 15:41:02
0可以算作第一个数字吗?如果是这样,那么您需要random.randint(0,10**n-1)
。如果不是,则返回random.randint(10**(n-1),10**n-1)
。如果零永远不被允许,那么你将不得不显式地拒绝其中包含零的数字,或者绘制n
random.randint(1,9)
数字。
旁白:有趣的是,randint(a,b)
使用了一些非pythonic式的“索引”来获得随机数a <= n <= b
。人们可能会期望它像range
一样工作,并产生一个随机数a <= n < b
。(请注意闭合的上限间隔。)
考虑到关于randrange
的注释中的响应,请注意,可以使用更干净的random.randrange(0,10**n)
、random.randrange(10**(n-1),10**n)
和random.randrange(1,10)
来替换它们。
发布于 2010-04-20 15:42:05
你可以给自己写一个小函数来做你想做的:
import random
def randomDigits(digits):
lower = 10**(digits-1)
upper = 10**digits - 1
return random.randint(lower, upper)
基本上,10**(digits-1)
给出的是最小的{-digit}数字,而10**digits - 1
给出的是最大的{数字}-digit数字(恰好是最小的{digit+1}-digit数字减1!)。然后我们只需要从这个范围中随机取一个整数。
https://stackoverflow.com/questions/2673385
复制相似问题