如何使用 Python 生成大于指定值的随机数?
Posted
技术标签:
【中文标题】如何使用 Python 生成大于指定值的随机数?【英文标题】:How do I use Python to generate a random number that is greater than a specified one? 【发布时间】:2017-07-01 12:30:26 【问题描述】:我的意思是我需要 Python 在一个条件下生成任何随机数,它必须大于用户定义的数字(比如说“x”),换句话说,它就像说 x>num>infinity。
我尝试使用随机模块,但似乎无法解决任何问题,因为我尝试了类似的方法
import random
import math
inf=math.inf
x=15
random.randint(x,inf)
但这不起作用,因为无穷大被注册为浮点数,而 randint 函数仅适用于整数。我也尝试过这样的事情
import random
import math
inf=math.inf
x=15
random.uniform(x,inf)
这应该可以工作,因为 uniform 函数可以处理浮点数,但它每次都会返回无穷大。
这意味着我需要在不使用无穷大(或 math.inf)的情况下在我的范围内完成这项工作,我只需要该范围具有最小值 (x) 而根本没有最大值。有什么建议么?
我在 OS X Yosemite 上运行 Python 3.6.0b4
【问题讨论】:
你真的想要一个整数吗?然后random.randint(x, sys.maxsize)
会这样做,请参阅***.com/q/7604966/3001761
如果你对 longs 没问题,那么你可以让数字尽可能大。
只能在有界区间上定义均匀分布。因此,试图在某个值和无穷大之间使用它是没有意义的。
我认为 sys.maxsize 应该可以正常工作,谢谢!
【参考方案1】:
没有特定的最大整数。见this article
请改用sys.maxsize
。
sys.maxsize 一个整数,给出 Py_ssize_t 类型的变量可以采用的最大值。在 32 位平台上通常为 2^31 - 1,在 64 位平台上通常为 2^63 - 1。
要将上限限制到某个较小的值,可以简单地定义一个小于sys.maxsize
所暗示的最大值。例如,最大 64 位有符号整数 9,223,372,036,854,775,807
可以限制为 999,999,999,999,999L
小数点后 15 位。您可以只使用该值或任何小于 sys.maxsize
所暗示的长整数。
【讨论】:
有没有办法将输出限制为一定的位数? @JadMoussa 是的,当然请参阅上面我编辑的答案。谢谢采纳!以上是关于如何使用 Python 生成大于指定值的随机数?的主要内容,如果未能解决你的问题,请参考以下文章
如何生成随机整数列表,但仅使用指定的整数? (Python)[重复]