【问题标题】:Python: Generate random number between x and y which is a multiple of 5 [duplicate]Python:在x和y之间生成随机数,它是5的倍数[重复]
【发布时间】:2012-01-07 09:36:00
【问题描述】:

我已阅读 Python 中的伪随机性手册,据我所知,您只能生成不超过给定最大值的数字,即 0-1、0-30、0-1000 等。我想要到:

  • a) 生成一个介于两个整数之间的数字,即 5-55,并且
  • b) 仅包含 5 的倍数(或者以 5 或 0 结尾的倍数,如果这样更容易的话)

我环顾四周,找不到任何解释这一点的地方。

【问题讨论】:

标签: python random


【解决方案1】:

在例如之间创建一个整数随机数1-11 乘以 5。简单的数学运算。

import random
for x in range(20):
  print random.randint(1,11)*5,
print

产生例如

5 40 50 55 5 15 40 45 15 20 25 40 15 50 25 40 20 15 50 10

【讨论】:

【解决方案2】:
>>> import random
>>> random.randrange(5,60,5)

应该在任何 Python >= 2 中工作。

【讨论】:

  • 虽然我觉得这是更好的答案,但我想指出,这个答案不包括返回 60,这可能违反直觉。我建议使用random.randrage(5,55+1,5) 作为更清晰的方法。
【解决方案3】:

如果不想自己做,可以使用random.randrange函数。

例如,import random; print random.randrange(10, 25, 5) 打印一个介于 10 和 25 之间的数字(包括 10,不包括 25)并且是 5 的倍数。因此它会打印 10、15 或 20。

【讨论】:

    【解决方案4】:

    最简单的方法是生成一个介于 0-1 之间的随机数,然后通过相乘和移位来拉伸它。
    所以你会乘以 (x-y) 所以结果在 0 到 x-y 的范围内,
    然后加上 x,你得到 x 和 y 之间的随机数。

    要获得五个乘数,请使用四舍五入。如果不清楚,请告诉我,我将添加代码 sn-ps。

    【讨论】:

    • 正如匿名者指出的那样,使用范围内随机化要干净得多。
    猜你喜欢
    • 2017-02-22
    • 2018-04-21
    • 1970-01-01
    • 2016-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-01-01
    • 2012-01-12
    相关资源
    最近更新 更多