【发布时间】:2019-10-11 21:36:27
【问题描述】:
我必须找到每个数组元素的第 n 个 nextInt。 下面的代码真的很慢,因为数组元素超过40k,每个数组元素都超过一百万。
int[] numbers ={1000000,1004300,2204000,1306000...40k+};
for (int i = 0; i <numbers.length; i++) {
Random ran = new Random(1234);
int nex = 0;
for (int n = 0; n <numbers[i]; n++) {
nex = ran.nextInt();
}
System.out.println("Next int value: " + nex);
}
有没有更快的方法来获得第 100 万个 nextInt?如果是,请问怎么做?
【问题讨论】:
-
您在第一个循环中有错字。它应该是
i++而不是n++。 -
那么,您期待什么?你打电话给
nextInt至少400亿次......你真的每次都打印输出吗?因为那肯定会大大减慢整个过程 -
打印输出并不是真正的问题,因为我可以使用 ArrayList 来捕获 nextInt,然后打印输出带有所有数字的 ArrayList。主要问题是循环 400 亿次。我在想是否存在我可以使用的 get(Index) 方法,而不是为每个元素循环数百万次。 @derpirscher
-
通常,这些内置的随机生成器有一个状态,该状态会随每个随机变化而变化。简单来说,
nexiInt得到的随机数可能会作为下一个随机数的种子。因此,为了计算第 10 个,您需要第 9 个,为此您需要第 8 个,......可能还有其他生成器可以满足您的需求。 Java中内置的没有。 -
stackoverflow.com/a/14616408/7285198 - 可能,这就是你想要的
标签: java arrays arraylist random int