栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

Python:如何生成12位随机数?

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Python:如何生成12位随机数?

一种简单的方法怎么了?

>>> import random>>> random.randint(100000000000,999999999999)544234865004L

而且,如果您希望以前导零开头,则需要一个字符串。

>>> "%0.12d" % random.randint(0,999999999999)'023432326286'

编辑:

我自己对这个问题的解决方案是这样的:

import randomdef 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建议的方法看起来更好。



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/634237.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号