【问题标题】:easy way to randomize the entries of an array using stl?使用stl随机化数组条目的简单方法?
【发布时间】:2011-01-13 14:01:44
【问题描述】:

我可以使用 stl 对 int* 数组进行排序, 像

这样简单明了
std::sort(myarray, myarray + size);

有没有同样简单的随机化方法?

谢谢

【问题讨论】:

  • @Partial:它还需要更多的括号。 :-P
  • 只需对其进行排序并称其为随机!毕竟,这是“随机化”它的一种可能结果。
  • @Chris Jester-Young:它显然需要参数和末尾的分号!我写的只是对问题中所写内容的更正。

标签: c++ stl arrays random


【解决方案1】:

std::random_shuffle(myarray, myarray + size);

【讨论】:

  • +1,另外,如果你想要比默认使用的 RNG 质量更高的东西,Boost.Random 也有一些很好的随机数生成器。 :-P
  • 谁说它不使用高质量的RNG了? :P 至少你可以用你自己的 RNG 来控制它,这对于单元测试之类的东西非常有用。
【解决方案2】:

如果您想生成新的随机内容而不是打乱已经存在的元素:

std::generate_n(myarray, size, &std::rand);

【讨论】:

  • +1:我不认为这就是提问者的意思,但很好地注意到“随机化”中的歧义:-)
猜你喜欢
  • 2014-07-29
  • 1970-01-01
  • 2021-05-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多