-1

我正在使用 Numpy 对包含大约 100 万个条目的数组进行洗牌。结果数组似乎根本不是随机顺序,我可以看到序列。

例如,如果原件是:

ar = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]

然后我在结果中看到这样的序列:

[6,7,8,5,10,1,2,3,4]

这是正常的吗?有没有更好的方法在 Numpy 中对数组进行洗牌?


编辑:

代码:np.random.shuffle(ar)

输出序列我的眼睛:

510 510 510 510 510 510 510 510 510 510 510 510 510 510 510 510 510 510 510 510 510 510 510 640 638 608 608 608 650 650 650 650 650 650 650 0 0 0 640 640 640 640 640 640 640 640 640 640 650 650 568 568 568 568 568 1280 568 568 568 568 568 568 568 608 608 608 608 0 0 0 0 0 0 0 0 0 0 640 640 600 600 600 600 0 510 510 510 510 510 510 510 510 510 510 510 510 510 510 510 510 510 510 510 510 510 510 510 510 510 510 510 510 510 510 510 510 510 510 640 640 660 650 650 0 0 608 608 608 608 640 640 640 640 640 640 640 640 640 640 640 640 640 640 650 650 650 650 650 650 650 568 608 568 568 568 568 568 568 568 608 608 608 608 608 608 608 608 608 0 0 0 0 0 0 0 0 640 640 600 600 600 600 600 640 0 510 510 510 510 510 510 510 510 510 510 510 510 510 510 510 510 510 510 510 510 510 510 510 510 510 510 510 510 510 510 510 640 660 608 608 608 608 640 650 650 650 650 00 0 0 0 640 608 608 608 640 640 640 640 640 640 640 640 640 640 640 640 640 650


编辑2:输入测试:

200000 x 1 400000 x 2 250000 x 3 5000 x 4 700000 x 5 2000000 x 6 175000 x 7 225000 x 8 700000 x 9 350000 x 10 75000 x 11 5000000 x 12 2000000 x 13 450000 x 14 50000 x 15 350000 x 16 900000 x 17 2500000 x 18 2000000 x 19 50000 x 20

np.random.shuffle(a)

前 100 个结果:

17, 6, 18, 12, 19, 14, 13, 13, 19, 18, 12, 12, 14, 12, 13, 19, 17, 8, 19, 3, 6, 18, 6, 9, 12, 12, 3, 16, 3, 12, 14, 9, 6, 5, 18, 12, 19, 1, 5, 13, 19, 5, 6, 5, 18, 12, 13, 7, 12, 12, 2, 18, 11, 12, 13, 19, 6, 18, 19, 13, 7, 12, 6, 9, 12, 12, 18, 2, 20, 6, 6, 19, 19, 13, 19, 12, 12, 12, 12, 19, 13, 18, 19, 6, 13, 6, 18, 6, 12, 9, 13, 12, 17, 1, 12, 17, 19, 13, 13, 18,

4

1 回答 1

0

你一定会看到序列(如果你真的很幸运,甚至一切都井井有条)。我假设你在做np.random.shuffle(ar). 这将对元素进行伪随机重新排序。出于所有实际目的,这是您正在寻找的随机性。

尝试运行:

for _ in range(1000):
   np.random.shuffle(ar)
   print(ar)

查看结果,您会发现一些序列,甚至可能重复,但实际上每个序列都是数组的随机重新排序。

于 2016-04-14T17:04:33.963 回答