c++ - 如何打乱数组以便所有元素改变它们的位置

标签 c++ random shuffle

我需要打乱一个数组,以便所有数组元素都应该改变它们的位置。 给定一个数组 [0,1,2,3] 可以得到 [1,0,3,2][3,2, 0,1] 而不是 [3,1,2,0](因为 2 保持不变)。 我想算法不会是特定于语言的,但为了以防万一,我在 C++ 程序中需要它(由于额外的要求,我不能使用 std::random_shuffle)。

最佳答案

这个呢?

  1. 分配一个数组,其中包含从 0 到 arrayLength-1 的数字
  2. 打乱数组
  3. 如果数组中没有索引等于其值的元素,则继续执行步骤4;否则从第 2 步开始重复。
  4. 使用打乱后的数组值作为数组的索引。

关于c++ - 如何打乱数组以便所有元素改变它们的位置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15096157/

相关文章:

python - 根据属性选择列表中的随机元素

c# - 更好的 C# 随机函数

java - 如何用我自己的对象洗牌 list(arrayList> ?

c++ linux ifstream 读取csv文件

c++ - 我可以有一个跳过索引的一维 bool 数组吗?

c++ - 如何在udp c++​​中发送和接收大量数据

c++ - 无用(也许是错误的?)gcc 错误消息

haskell - 使用 Haskell 的随机元素网格

php - 在数组php中随机播放

c - 字符串中所有可能的字符组合