3

在我的程序中,我需要生成许多大的随机整数序列。

我知道我可以只使用 Random 对象来创建序列,将该序列存储在列表或数组中,然后在需要时查询它以获取第 i 个元素,但因为序列可能很长(1M 个元素)和我有许多不同的序列,我想知道是否可以只存储每个序列的种子并执行以下操作:

public static int getIthNumber(int seed, int i){
    Random r = new Random(seed);
    for (int j=0; j< i-1; ++j) r.nextInt();
    return r.nextInt();
}

但没有循环的开销..

4

1 回答 1

3

如果您需要随机访问,您可以避免使用正确的顺序。

public static int getIthNumber(int seed, int i){
    return new Random(seed * 10123457689L + i * 101111).nextInt();
}
于 2012-10-10T22:16:19.773 回答