4ZM*_*4ZM 13 c++ complexity-theory iterator stl permutation
假设您想以随机顺序迭代序列[0到n],只访问每个元素一次.有没有办法在O(1)内存中执行此操作,即不创建[1..n]序列std::iota并运行它std::random_shuffle?
某种迭代器以随机顺序吐出序列将是最佳的.
要求是应该可以通过选择另一个种子来获得另一个随机顺序.
从理论上讲,如果你构建了一个周期正好为n的随机数生成器,并覆盖了0..n中的所有值,那么运行这一次就可以得到你喜欢的内容.
当然,这可能不是一般解决方案,至少如果你正在寻找动态的东西,因为你必须预先创建PRNG以及你如何做到这一点取决于n.