numpy np.随机.带种子的置换?

a0x5cqrl  于 2023-10-19  发布在  其他
关注(0)|答案(4)|浏览(110)

我想用一个种子np.random.permutation,像

np.random.permutation(10, seed=42)

我得到以下错误:

"permutation() takes no keyword arguments"

我还能怎么做谢谢.

bvjxkvbb

bvjxkvbb1#

如果你想让它在一行中,你可以创建一个新的RandomState,并在上面调用permutation

np.random.RandomState(seed=42).permutation(10)

这比只设置np.random的种子要好,因为它只会产生局部效果。

NumPy 1.16更新:

RandomState现在被认为是传统功能。我没有看到任何迹象表明它将很快被弃用,但现在推荐的生成可重复随机数的方法是通过Random Generators,其默认值可以这样示例化:

np.random.default_rng(seed=42).permutation(10)

请注意,对于此生成器,似乎无法保证不同版本的NumPy之间的比特流等效性,而对于RandomState,文档指出"This generator is considered frozen and will have no further improvements. It is guaranteed to produce the same values as the final point release of NumPy v1.16."

bwntbbo3

bwntbbo32#

np.random.seed(42)
np.random.permutation(10)

如果你想多次调用np.random.permutation(10)并得到相同的结果,你还需要在每次调用permutation()时调用np.random.seed(42)
比如说,

np.random.seed(42)
print(np.random.permutation(10))
print(np.random.permutation(10))

会产生不同的结果:

[8 1 5 0 7 2 9 4 3 6]
[0 1 8 5 3 4 7 9 6 2]

np.random.seed(42)
print(np.random.permutation(10))
np.random.seed(42)
print(np.random.permutation(10))

将给予相同的输出:

[8 1 5 0 7 2 9 4 3 6]
[8 1 5 0 7 2 9 4 3 6]
xriantvc

xriantvc3#

在前一行设置种子

np.random.seed(42)
np.random.permutation(10)
r8uurelv

r8uurelv4#

您可以将其分解为:

import numpy as np
np.random.seed(10)
np.random.permutation(10)

通过首先初始化随机种子,这将保证您获得相同的排列。

相关问题