【发布时间】:2014-10-05 03:36:28
【问题描述】:
我有一个数组 s = {'ACA','BBC','CKA',...};
我想随机播放 s。所以我创建列表 A={1,2,3,4..} 和列表 B={1,2,3,4,...}
然后,我将这两个列表打乱。 random.shuffle(A) random.shuffle(B)
最后,我将 s[A[0]] 与 s[B[0]] 交换,将 s[A[1]] 与 s[B[1]] 交换.....
这个算法会产生 s 的随机排列吗?是否足够随机?假设 random.shuffle 产生足够随机的 A 和 B 排列。
【问题讨论】:
-
这是什么语言?为什么你不能只打乱你的原始数组,而不是创建另外两个数组,打乱它们,然后用它来打乱第一个?
-
s,A 和 B 的关系是什么。您的问题似乎说明了几个问题的不足部分。
-
s 是一个非常大的字符串序列。每个字符串大约 8000 字节。 A 和 B 是序列 {1,2,3,....length(s)} 的排列
-
@NickT 我正在使用 C 语言。 s 的每个元素实际上都是很长的字符串(大约 8000 字节)。 s 大约 500GB,我想对 s 进行就地排列,因为我想把所有东西都保存在内存中。
标签: algorithm random permutation shuffle