【发布时间】:2013-11-06 18:34:39
【问题描述】:
我需要生成将用作数组索引的“随机”int 值,因此它们对于给定的间隔需要是唯一的。
LFSR 似乎非常适合这项任务,但有一个问题:任何一个数组大小都应该是 2^n 大小(在某些情况下,它会强制分配比所需内存更多的内存(例如,数据大小 2100 - 数组大小 4096 )) 或跳过生成的数字,直到找到正确的值(浪费 LFSR 功能,在某些情况下索引的生成时间可能很明显)。
我尝试创建一些公式来计算数组索引,但失败了,尤其是对于小 (
这个问题是否有任何最优(就资源和计算时间而言)解决方案?
提前感谢您的回答!
【问题讨论】:
-
生成一个完整的索引数组,然后打乱它。
-
如果您有 2^n 个元素的排列,您可以简单地重复该排列,直到回到所需的子区间。这平均需要少于两次迭代。