我需要打乱一个数组,以便所有数组元素都应该改变它们的位置。
给定一个数组 [0,1,2,3]
可以得到 [1,0,3,2]
或 [3,2, 0,1]
而不是 [3,1,2,0]
(因为 2
保持不变)。
我想算法不会是特定于语言的,但为了以防万一,我在 C++ 程序中需要它(由于额外的要求,我不能使用 std::random_shuffle
)。
最佳答案
这个呢?
- 分配一个数组,其中包含从 0 到 arrayLength-1 的数字
- 打乱数组
- 如果数组中没有索引等于其值的元素,则继续执行步骤4;否则从第 2 步开始重复。
- 使用打乱后的数组值作为数组的索引。
关于c++ - 如何打乱数组以便所有元素改变它们的位置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15096157/