【问题标题】:Randomly Shuffling 2 Arrays in Unison in C在 C 中一致地随机改组 2 个数组
【发布时间】:2013-11-13 02:15:35
【问题描述】:

假设我有两个数组 KEYS 和 VALS,我想统一随机随机打乱它们(在打乱后应该保留键值对匹配)。

如果我用静态值作为随机函数的种子,然后在 KEYS 上调用 std::random_shuffle,然后 VALS 是否会以相同的方式对两个数组进行混洗?

【问题讨论】:

  • 随机排列索引数组,然后使用它对两个数组重新排序
  • 为什么不改组boost::zip_iterator
  • 如果您在每次洗牌前使用相同的种子,那么是的......否则怎么可能?但是为什么你的键和值在不同的数组中?将 key 和 val 放在一个结构中。
  • 啊,感谢 Jim 发现真正的问题

标签: c arrays random shuffle


【解决方案1】:

是的,他们会,但前提是你先洗牌,然后用相同的值播种随机数生成器,然后再洗牌。而且您应该对两者使用相同的随机播放功能;使用不同的洗牌器是很危险的,这些洗牌器可能会或可能不会调用 rand() 不同的次数。
但是,我建议您以某种方式关联数据;您可以实现一个地图或只是将数据放在一个结构中。保持数组分开并相信您的 random 函数会以完全相同的方式对它们进行洗牌,这是自找麻烦。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-08-15
    • 1970-01-01
    • 1970-01-01
    • 2012-05-25
    • 2018-02-10
    • 1970-01-01
    • 2019-02-16
    相关资源
    最近更新 更多