首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何生成具有特定位数的随机数?

如何生成具有特定位数的随机数?
EN

Stack Overflow用户
提问于 2010-04-20 15:38:19
回答 6查看 205.1K关注 0票数 135

假设我需要一个3位数的数字,那么它应该是这样的:

代码语言:javascript
复制
>>> random(3)
563

or

>>> random(5)
26748
>> random(2)
56
EN

回答 6

Stack Overflow用户

发布于 2013-03-16 02:44:11

如果您希望它是一个字符串(例如,一个10位数字的电话号码),您可以使用以下命令:

代码语言:javascript
复制
n = 10
''.join(["{}".format(randint(0, 9)) for num in range(0, n)])
票数 49
EN

Stack Overflow用户

发布于 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)来替换它们。

票数 5
EN

Stack Overflow用户

发布于 2010-04-20 15:42:05

你可以给自己写一个小函数来做你想做的:

代码语言:javascript
复制
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!)。然后我们只需要从这个范围中随机取一个整数。

票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2673385

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档