Mic*_*hal 5 c++ arrays random algorithm
我有一个给定大小的数组.我想以伪随机顺序遍历它,保持数组完整并访问每个元素一次.如果当前状态可以存储在几个整数中,那将是最好的.
我知道你不能在没有存储完整数组的情况下完全随机,但我不需要命令是非常随机的.我需要它被用户视为随机的.解决方案应该使用子线性空间.
这里给出了一个可能的建议 - 使用大素数.该解决方案的问题在于存在明显的固定步骤(采用模块阵列大小).我更喜欢一种不是非随机的解决方案.有更好的解决方案吗?
rya*_*son 2
这个算法怎么样?
来伪伪随机遍历一个大小为n的数组。
k 越高,获得的随机性就越大。这种方法将允许您延迟从素数方法生成数字。
通过创建另一个数组“skip-list”,可以采用类似的方法来生成比序列中预期更早的数字。随机选择序列中稍后的项目,使用它们遍历下一个位置,然后将它们添加到跳过列表中。当它们自然到达时,将在跳跃列表中搜索它们并进行抑制,然后从跳跃列表中删除,此时您可以随机将另一个项目添加到跳跃列表中。
归档时间:
11 年,2 月 前
查看次数:
765 次
最近记录:
7 年,3 月 前