【问题标题】:Full-range random number in PythonPython中的全范围随机数
【发布时间】:2026-01-01 17:45:01
【问题描述】:

我正在使用这一行生成一系列随机浮点数:

random.random()*(maxval-minval) + minval

我用它给给定变量添加变量噪声,添加的噪声量取决于一系列因素。在某些情况下,噪声应该如此之高,以至于实际上丢失了原始值,而我有一个完全随机的值。

在这种情况下,代码适用于有限值,但如果我使用“inf”,它会返回 NaN。是否有一种解决方法可以允许可能包括无穷大的连续随机范围?我不想篡改os.random(),因为它是特定于机器的。

【问题讨论】:

    标签: python numpy random range


    【解决方案1】:

    如果您在无限域上定义均匀随机分布,则选择该域中的任何值的概率都是无穷小。你所要求的没有任何数学意义。

    【讨论】:

      【解决方案2】:

      正如之前所说,您不能在整条实线上进行均匀分布,但您可以使用其他支持实线的随机分布。考虑柯西分布。它有“重尾”,这仅仅意味着获得非常大的数字的可能性很大。

      【讨论】:

        【解决方案3】:

        在 cmets 讨论后,我提出以下建议:

        >>> m=sys.maxint
        >>> np.random.uniform(-m,m,5)
        array([ -5.32362215e+18,  -2.90131323e+18,   5.14492175e+18,
                -5.64238742e+18,  -3.49640768e+18])
        

        如前所述,您可以使用sys.maxint 获得最大整数,然后您可以使用np.random.randint 获得maxint-maxint 之间的随机数。

        【讨论】:

        • Python 2 中的最小值是-sys.maxint - 1, source
        【解决方案4】:

        正如@Asad 所说,您所尝试的在数学上不太合理。但你可以做的是:

        也许这就是你要找的。​​p>

        【讨论】: