在Java中创建唯一随机数

在Java中创建唯一随机数,java,Java,我当时正在做一个随机数(有点像猜谜游戏),并想出了ff。生成10个一位数或两位数(1或10至40)的代码: public void generate() { 对于(int i=0;i在数组中进行搜索,以了解值是否存在: private boolean isInsideArray(int randomNumber, int[] arr){ for(int x = 0; x < arr.length; x++){ if(arr[x] == randomNumber) r

我当时正在做一个随机数(有点像猜谜游戏),并想出了ff。生成10个一位数或两位数(1或10至40)的代码:

public void generate()
{

对于(int i=0;i在数组中进行搜索,以了解值是否存在:

private boolean isInsideArray(int randomNumber, int[] arr){
    for(int x = 0; x < arr.length; x++){
        if(arr[x] == randomNumber) return true;

    }
    return false;
}
私有布尔值isInsideArray(int randomNumber,int[]arr){
对于(int x=0;x
当您想知道数组中是否有数字时,只需调用此函数


注意:此代码未经测试,只是一个帮助您解决问题的示例。也不是最优雅的解决方案,Java中有许多方法可以帮助您在不循环整个数组的情况下完成此任务。

在数组中搜索以了解值是否存在:

private boolean isInsideArray(int randomNumber, int[] arr){
    for(int x = 0; x < arr.length; x++){
        if(arr[x] == randomNumber) return true;

    }
    return false;
}
私有布尔值isInsideArray(int randomNumber,int[]arr){
对于(int x=0;x
当您想知道数组中是否有数字时,只需调用此函数


注意:此代码未经测试,它只是一个帮助您解决问题的示例。也不是最优雅的解决方案,Java中有许多方法可以帮助您在不循环整个数组的情况下完成此任务。

Set保证唯一元素。然后您可以获取结果并将其转换为您想要的任何集合或数组

public List<Integer> generate() {
   Random random = new Random();
   Set<Integer> set = new LinkedHashSet<Integer>();
   for(int i = 0; i < numberCount; i++) {
      set.add(random.nextInt(range));
   }
   return new ArrayList<Integer>(set);
}
公共列表生成(){
随机=新随机();
Set Set=newlinkedhashset();
对于(int i=0;i
集合保证元素的唯一性。然后您可以获取结果并将其转换为您想要的任何集合或数组

public List<Integer> generate() {
   Random random = new Random();
   Set<Integer> set = new LinkedHashSet<Integer>();
   for(int i = 0; i < numberCount; i++) {
      set.add(random.nextInt(range));
   }
   return new ArrayList<Integer>(set);
}
公共列表生成(){
随机=新随机();
Set Set=newlinkedhashset();
对于(int i=0;i
公共作废生成(){
随机rdm=新随机();
int i=0;
而(i<10){
int j=rdm.nextInt(范围)+1;
如果(!arrayContains(j)){
arr[i]=j;
i++;
}
}   
}
公共布尔数组内容(int i){
对于(int k=0;k
这应该可以完成任务。不过可能会更优雅。

public void generate(){
随机rdm=新随机();
int i=0;
而(i<10){
int j=rdm.nextInt(范围)+1;
如果(!arrayContains(j)){
arr[i]=j;
i++;
}
}   
}
公共布尔数组内容(int i){
对于(int k=0;k

这应该可以完成任务。不过可能会更优雅。

另一个选项是使用随机播放

List<Integer> all = new ArrayList<>();
for(int i=1;i<=range;i++) all.add(i);
Collections.shuffle(all);
List<Integer> selected = all.subList(0, 10);
List all=new ArrayList();

对于(inti=1;i另一个选项是使用随机播放

List<Integer> all = new ArrayList<>();
for(int i=1;i<=range;i++) all.add(i);
Collections.shuffle(all);
List<Integer> selected = all.subList(0, 10);
List all=new ArrayList();
对于(inti=1;i
HashSet=newhashset();
随机=新随机();
int i=0;
while(set.size()<10){
set.add(random.nextInt(40)+1);
i++;
}
系统输出打印项次(套);
系统输出打印LN(i);
HashSet=newhashset();
随机=新随机();
int i=0;
while(set.size()<10){
set.add(random.nextInt(40)+1);
i++;
}
系统输出打印项次(套);
系统输出打印LN(i);

您可以使用一个结构,例如,
ArrayList
来存储以前生成的数字,然后检查新数字是否在该列表中。另请参见,它的实现几乎可以正常工作。+1要将其恢复为0,不确定为什么会被否决,因为这对我来说似乎是一个有效的问题。要使用集合,请参见我的answe以下r:)@Paul我认为它被用来表示,这可能不寻常,但我认为是有效的。例如,你可以使用一个结构,
ArrayList
,来存储以前生成的数字,然后检查新数字是否在该列表中。另请参见,它有一个几乎正常工作的实现。+1将此值恢复为0,不确定为什么它被否决对我来说,这似乎是一个有效的问题。如果要使用集合,请参见下面我的答案:)@Paul我想这是用来表示,这很不寻常,但我认为是有效的。我想你的意思是在循环后加上
return false
。另外,如果你使用
ArrayList
,你会得到
ArrayList.contains
,而
ArrayList
更适合这种情况。这家伙只是在做功课来学习loops.同意arraylist更好,这个解决方案更适合他今天学习的内容。别担心,他很快就会学习arraylist:)我想你是想把
return false
放在循环之后。另外,如果你使用
ArrayList
,你会得到
ArrayList.contains
,而
ArrayList
对于这种情况更好。这个家伙只是在做功课来学习循环。同意ArrayList更好,这个解决方案更适合他所学的东西今天rning。别担心,他很快就会学习ArrayList:)我不太了解Java的结构,但我认为在出现
numberCount
之前,它不会一直生成数字;它只会消除重复项。问:这段代码会生成10个一位数或两位数的随机数吗?在发布我自己的答案之前,我没有看到这个答案。我的答案是相同的概念,但我的将保证集合是1-40(包括)范围内的10个数字我不知道Java的结构,但我认为在出现
numberCount
之前,它不会一直生成数字;它只会消除重复的数字。问:这段代码会生成10个一位数或两位数的随机数字吗?我在发布我自己的答案之前没有看到这个答案。我的是相同的概念,但我的会
    HashSet<Integer> set = new HashSet<Integer>();
    Random random = new Random();
    int i = 0;

    while(set.size() < 10){
        set.add(random.nextInt(40) + 1);
        i++;
    }

    System.out.println(set);
    System.out.println(i);