在 JAVA 中创建给出长度和值范围的随机 Int 数组
Posted
技术标签:
【中文标题】在 JAVA 中创建给出长度和值范围的随机 Int 数组【英文标题】:Create Random Int Array giving a lenght and a range of values in JAVA 【发布时间】:2021-03-03 15:34:47 【问题描述】:我正在尝试编写一个 Java 代码,其中给定一个 int 数组的长度以及一个最小值和最大值,它返回一个随机数组值。
我正在尝试以最简单的方式对其进行编程,但我仍然不了解编程过程是如何工作的。
我尝试过的如下:
import java.util.Random;
public class RandomIntArray
public static void main(String[] args)
System.out.println(createRandom(10));
public static int[] createRandom(int n)
Random rd = new Random();
int[] array = new int[n];
int min = 5;
int max = 99;
for (int i = 0; i < array.length; i++)
array[i] = rd.nextInt();
while (array[i] > min) ;
while (array[i] < max) ;
return array;
【问题讨论】:
你提供的代码有什么问题? 它不会返回一个随机数组,我介绍的长度是给定最小值和最大值 它做了什么而不是预期的行为? 代码运行时间过长。我不知道为什么 【参考方案1】:public static int[] createRandom(int n)
Random rd = new Random();
int[] array = new int[n];
int min = 5;
int max = 10;
for (int i = 0; i < array.length; i++)
array[i] = rd.nextInt(max-min+1) + min;
System.out.print(array[i] +" ");
return array;
public static void main(String[] args)
createRandom(5);
【讨论】:
非常感谢您的帮助!我对您的代码有疑问:这个位是什么意思:array[i] = rd.nextInt(max-min+1) + min;? 如果你的最小值是 5,最大值是 10,那么 (max - min + 1) + min 给你 11,意味着 rd.nextInt(11) 给你数字 0 ≤ number 【参考方案2】:尝试使用IntStream
来实现你想要的
public static void main(String[] args)
int[] arr = createRandom(10);
for (int i = 0; i < arr.length; i++)
System.out.println(arr[i]);
public static int[] createRandom(int n)
Random r = new Random();
int min = 5;
int max = 99;
return IntStream
.generate(() -> r.nextInt(max - min) + min)
.limit(n)
.toArray();
【讨论】:
【参考方案3】:我们必须调整的第一件事是随机数生成。您似乎指定了min
和max
,因此必须在这些范围内生成一个数字。我们可以使用Random.nextInt(int bound) method 来设置等于max - min
的范围。但是,此范围将从 0 开始,因此我们必须添加您的 min
值才能使绑定完成。使用此过程将消除对现有while
循环的需要。 See this question for more on this.
现在,array
中的每个值都将生成为
array[i] = rd.nextInt(max - min) + min
当尝试打印数组元素时,带有数组变量名的 System.out.println() 语句将打印数组的内存地址。 这不会打印整个值数组。
我们必须对元素进行迭代以打印它们。最好使用 for 循环来执行此操作,但您的程序可以生成任意大小的数组。因此,我们应该使用 for-each 循环,如下所示:
for (int num : createRandom(10))
System.out.println(num);
这个 for-each 表示“对于 createRandom(10) 返回的 array
中的每个 int,将其引用为变量 num
并打印它。”
这是最终代码:
import java.util.Random;
public class RandomIntArray
public static void main(String[] args)
for (int num : createRandom(10))
System.out.println(num);
public static int[] createRandom(int n)
Random rd = new Random();
int[] array = new int[n];
int min = 5;
int max = 99;
for (int i = 0; i < array.length; i++)
array[i] = rd.nextInt(max - min) + min;
System.out.println(array[i]);
return array;
【讨论】:
以上是关于在 JAVA 中创建给出长度和值范围的随机 Int 数组的主要内容,如果未能解决你的问题,请参考以下文章