Python:在x和y之间生成随机数,它是5的倍数[重复]

Posted

技术标签:

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

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

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

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

【问题讨论】:

你读过docs.python.org/library/random.html吗?向下扫描到标题为“整数函数”的部分。 【参考方案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

【讨论】:

浮动:***.com/questions/6088077/…【参考方案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。

【讨论】:

正如匿名者指出的那样,使用范围内随机化要干净得多。

以上是关于Python:在x和y之间生成随机数,它是5的倍数[重复]的主要内容,如果未能解决你的问题,请参考以下文章

python学习—random生成随机数

python 知道直线方程,怎么在直线上随机生成一个点?

生成一组随机 x,y,z 数字,它们之间的差异最小,在定义的限制之间

R:如果另一个向量中的值在 x 和 y 之间,则范围之间的随机数

linespace函数

python相关性分析如何生成两个相关性最强的两门?