【问题标题】:Generate a random number [duplicate]生成一个随机数[重复]
【发布时间】:2019-02-10 09:07:15
【问题描述】:

我正在做一个问题,要求我使用random() 以相等的概率生成一个介于 0 到 9999 之间的数字。我知道我可以通过乘以来缩放random(),但我得到的主要是 4 位数字。有人知道该怎么做吗?

【问题讨论】:

  • 在 0-9999 个数字中,1000-9999 是 4 位数字。因此,当每个数字的概率相同时,您很可能会得到一个 4 位数字。
  • 我知道我可以通过乘以 random() 来缩放它:你不应该那样做 ;)
  • 顺便说一句:欢迎来到 Stackoverflow。你被否决的原因是,因为有很多关于在 x 和 y 之间生成随机数的问题,所以你应该先搜索你的问题,然后再盲目提问。请花点时间阅读the tour 并阅读how to ask a good question
  • 我实际上试图搜索类似的问题,但我不能。

标签: python python-3.x


【解决方案1】:

使用randint

>>> import random as r
>>> r.randint(0,9999)
6935
>>> r.randint(0,9999)
5550
>>> 

【讨论】:

    【解决方案2】:

    建议,假设你想要一个随机整数:

    from random import randint
    print(randint(0,9999))
    

    【讨论】:

      【解决方案3】:

      您将获得 4 位数字,因为它们是您范围的 90%,因此这是意料之中的。但是,您不需要缩放random(),而是使用random.randint

      【讨论】:

        【解决方案4】:
        import numpy as np
        
        # retruns n numbers with uniform(equal) propability between a and b
        # thus for each x in arr: a <= x < b
        arr = np.random.uniform(a, b, n)
        

        如果你希望它们是整数

        arr = np.round(arr).astype(int)
        

        参见此处:np.random.uniform

        【讨论】:

        • 没有必要使用像 numpy 这样的外部库来生成随机数,但是是的,这应该可以工作
        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2023-01-03
        • 2017-07-25
        • 2019-02-15
        • 2015-03-26
        • 2012-05-28
        • 2012-12-17
        相关资源
        最近更新 更多