【问题标题】:How to generate a "big" random number in Python?如何在 Python 中生成“大”随机数?
【发布时间】:2012-04-04 13:53:01
【问题描述】:

如何在 Python 中生成一个大(超过 64 位)随机整数?

【问题讨论】:

    标签: python random biginteger


    【解决方案1】:

    你可以使用random.getrandbits():

    >>> random.getrandbits(128)
    117169677822943856980673695456521126221L
    

    如链接文档中所述,如果random.getrandbits() 可用,random.randrange() 也可以解决问题。

    【讨论】:

    • 很明显。我怎么没想到?谢谢!
    【解决方案2】:

    你也可以使用这个函数生成任意长度的数字。

    def generateRandomNumber(digits):
        finalNumber = ""
        for i in range(digits // 16):
            finalNumber = finalNumber + str(math.floor(random.random() * 10000000000000000))
        finalNumber = finalNumber + str(math.floor(random.random() * (10 ** (digits % 16))))
        return int(finalNumber)
    

    【讨论】:

    • 这里闻起来有些奇怪。硬编码值(16 和 10**16)是怎么回事?这不会影响随机数的分布吗?
    • @Harry 不是真的,我将 10**16 乘以 random digit 只是为了删除小数位。作为 random.random() 将输出 16 位带小数的随机数字。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-07-23
    • 1970-01-01
    • 2011-12-16
    • 2013-11-13
    • 1970-01-01
    • 2021-06-29
    • 2021-08-14
    相关资源
    最近更新 更多