编写一个程序来生成0到100范围内任意数量的随机整数。您的程序应该将大小作为参数,并将数字作为数组返回。
这是我得到的问题,下面是我尝试过的代码,但是我得到了重复的代码。如何生成没有任何重复的随机数?
import java.util.Arrays;
import java.util.Random;
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.println("size:\t");
int n = sc.nextInt();
int[] arr = new int[n];
Random rand = new Random(); //instance of a random class.
int upperbound = 101; //generate random values from 0-100
for(int i=0;i<n;i++) {
arr[i] = rand.nextInt(upperbound);
}
System.out.println("Random Numbers: "+ Arrays.toString(arr));
}
}
5条答案
按热度按时间ztyzrc3y1#
您可以创建一个包含从0到100的所有值的列表,然后将其洗牌并提取该列表的前n个元素,如下所示:
jgzswidk2#
您可以创建一个1…100的列表(我们称之为“l”)和一个大小为100的数组(我们称之为“a”)。
然后,创建一个for循环并生成一个介于0到l之间的数字。size()-1。
第一次迭代生成(我们称之为index0)将是l中的索引,该索引将作为数组中的第一个对象。因此,调用l.remove(index0),并在[0]中使用检索到的对象。
第二次迭代生成,介于0到l.size()-1之间,表示0到98。这将是index1。调用l.remove(index1),检索到的对象将用于[1]中的第二个索引。
直到我空了为止。
fcwjkofz3#
你可以使用
HashSet
并不断向其中添加所有新条目,同时生成新的random
整数,检查它是否已生成(如果数字在unique
设置)。如果号码已经生成,则继续生成新号码,直到找到唯一号码。
busg9geu4#
这段代码也可以工作
kyxcudwk5#
您可以使用arraylist,而不是使用数组,并且只有在arraylist以前未使用过的情况下,才可以将该值添加到arraylist中。
在此之后,您可以直接打印arraylist或将其转换为数组,然后将其打印出来。