在给定的示例中,使用 Random 类背后的逻辑是什么?



下面的方法创建一个给定大小的int类型的一维数组,并将值1随机分配给数组的给定百分比。我不完全理解在这个例子中使用 nextInt。如何确保在 while 循环的每次迭代中选择一个不同的索引,而不是在上一次迭代中已经选择的索引。

import java.util.Random;
...
int[] randomIntArray(int size, double percent) {
int n = (int) (size * percent);
int[] array = new int[size];
Random r = new Random();
while(n > 0) {
int next = r.nextInt(size);
if (array[next] != 0) continue;
array[next] = 1;
n--;
}
return array;
}

以前选择next很好,因为有一个if (array[next] != 0)检查,然后是array[next] = 1

该行if (array[next] != 0) continue;清楚地(与格式不佳的代码一样清晰(指出,如果数组索引的值已经设置为 1,则直接返回到 while 循环的头部。

continue关键字应该非常小心地使用,并且要谨慎使用,因为它对读者不是很友好,并且通常有更好的方法来构建相同的目标。

最新更新