【问题标题】:In python: Can I rely on random.seed() in order to generate always the same permutation of a matrix?在 python 中:我可以依靠 random.seed() 来生成始终相同的矩阵排列吗?
【发布时间】:2025-12-26 03:35:16
【问题描述】:

我想在 python 中随时排列各种 2x2 numpy.array() 的行。如果在每次排列之前将 random.seed() 修复为某个整数,我是否可以依靠种子来确保排列始终相同?我能找到一些解释让我相信这种方法是可靠的吗?

【问题讨论】:

    标签: python-3.x numpy permutation shuffle random-seed


    【解决方案1】:

    使用random.seed 修复种子的真正目的是在将种子重置为已知值后能够始终如一地产生相同的伪随机数。所以是的,如果您的排列依赖于(伪)随机状态,那么将种子设置为已知常数将使算法每次都生成相同的排列序列。

    来自the docs(这是最有说服力的):

    使用相同参数的固定种子和对RandomState 方法的一系列固定调用将始终产生相同的结果,直至舍入误差...

    >>> import numpy as np
    >>> np.random.seed(5)
    >>> np.random.rand()
    0.22199317108973948 # (1)
    >>> np.random.rand()
    0.8707323061773764 # (2)
    >>> np.random.seed(5)  # re-seed
    >>> np.random.rand()
    0.22199317108973948 # same as (1)
    >>> np.random.seed(5)
    >>> np.random.rand()
    0.22199317108973948 # same as (1) again
    >>> np.random.rand()
    0.8707323061773764 # same as (2)
    

    【讨论】: