【发布时间】:2013-11-02 16:04:36
【问题描述】:
我想生成一个从0 到size - 1 的统一索引,但不同于给定集合excluded 中的任何索引。
size 大约是 100。通常有 1、2 或 3 个 exluded 索引。 excluded 中的索引是唯一的且未排序。
理想情况下,标题将带有多个参数,可能是这样的:
int getRandomIndex(Random rand, int size, int... i)
或者,如果这个... 多参数很慢(是吗?)我们可以传递简单的int[] excluded 数组或其他东西。
如何快速完成? getRandomIndex() 被调用了数百万次。
【问题讨论】:
-
那么你想生成一个随机数,但它不包含在某些数字集中?
-
@JamesMontagne 是的,完全正确。
-
@JamesMontagne 比大小差。
-
您可以将所有有效索引添加到集合中,然后从该集合中随机选取一个元素。当然,如果有效索引的数量很大,那就没有效率了。
-
如果你关心构建一个数组,那就构建一个
Set吧!
标签: java performance algorithm