Python:如何生成12位随机数?
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了Python:如何生成12位随机数?,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1697字,纯文字阅读大概需要3分钟。
内容图文
![Python:如何生成12位随机数?](/upload/InfoBanner/zyjiaocheng/700/8869c803413d45c8a07c279a9c79bff6.jpg)
在Python中,如何生成12位随机数?是否有任何函数可以指定像random.range(12)这样的范围?
import random
random.randint()
输出应为12位数字的字符串,范围为0-9(允许前导零).
解决方法:
直截了当的方法有什么问题?
>>> import random
>>> random.randint(100000000000,999999999999)
544234865004L
如果你想要它带有前导零,你需要一个字符串.
>>> "%0.12d" % random.randint(0,999999999999)
'023432326286'
编辑:
我自己解决这个问题的方法是这样的:
import random
def rand_x_digit_num(x, leading_zeroes=True):
"""Return an X digit number, leading_zeroes returns a string, otherwise int"""
if not leading_zeroes:
# wrap with str() for uniform results
return random.randint(10**(x-1), 10**x-1)
else:
if x > 6000:
return ''.join([str(random.randint(0, 9)) for i in xrange(x)])
else:
return '{0:0{x}d}'.format(random.randint(0, 10**x-1), x=x)
测试结果:
>>> rand_x_digit_num(5)
'97225'
>>> rand_x_digit_num(5, False)
15470
>>> rand_x_digit_num(10)
'8273890244'
>>> rand_x_digit_num(10)
'0019234207'
>>> rand_x_digit_num(10, False)
9140630927L
速度计时方法:
def timer(x):
s1 = datetime.now()
a = ''.join([str(random.randint(0, 9)) for i in xrange(x)])
e1 = datetime.now()
s2 = datetime.now()
b = str("%0." + str(x) + "d") % random.randint(0, 10**x-1)
e2 = datetime.now()
print "a took %s, b took %s" % (e1-s1, e2-s2)
速度测试结果:
>>> timer(1000)
a took 0:00:00.002000, b took 0:00:00
>>> timer(10000)
a took 0:00:00.021000, b took 0:00:00.064000
>>> timer(100000)
a took 0:00:00.409000, b took 0:00:04.643000
>>> timer(6000)
a took 0:00:00.013000, b took 0:00:00.012000
>>> timer(2000)
a took 0:00:00.004000, b took 0:00:00.001000
它告诉我们的是什么:
对于大约6000个字符以下的任何数字,我的方法更快 – 有时快得多,但对于更大的数字,arshajii建议的方法看起来更好.
内容总结
以上是互联网集市为您收集整理的Python:如何生成12位随机数?全部内容,希望文章能够帮你解决Python:如何生成12位随机数?所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。