如何使用 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 生成大于指定值的随机数?的主要内容,如果未能解决你的问题,请参考以下文章

shell生成指定范围内的随机数

python20181225——面试题

如何生成随机整数列表,但仅使用指定的整数? (Python)[重复]

如何生成1亿个手机号码?Python生成随机数的22种方法,random函数太强了

MySQL中的RAND()函数使用

python 如何生成 2 1 4 3 6 5 8 7。。。的指定长度的序列?