Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/330.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何使我的随机数唯一并对其排序_Java_Arrays_Random - Fatal编程技术网

Java 如何使我的随机数唯一并对其排序

Java 如何使我的随机数唯一并对其排序,java,arrays,random,Java,Arrays,Random,我使用收集洗牌,但它不工作,到目前为止,我用这个 import java.util.Random; import java.util.ArrayList; import java.util.Arrays; import java.util.Collections; public class TotoMachine { public static void main(String[] args) { int[] array = new int[7]; Ra

我使用收集洗牌,但它不工作,到目前为止,我用这个

import java.util.Random;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collections;

public class TotoMachine {
    public static void main(String[] args) {
        int[] array = new int[7];
        Random rand = new Random();
        for (int i = 0; i < array.length; i++)
            array[i] = rand.nextInt(65) + 1;
        //Collections.shuffle()
        Arrays.sort(array);
        System.out.println(Arrays.toString(array));
    }
}

假设你可以试着这样做。 希望您熟悉列表


这可能有效:将生成的随机数添加到集合中,直到达到某个大小。然后将其转换为如下数组:

import java.util.*;

class random{
    public static void main(String[] args){
    int max=65;
    int min=0;
    int size=7;

    Set<Integer> set = new HashSet<Integer>();
    Random random = new Random(); 
    while(set.size()<size){
        int randomNum = random.nextInt((max - min) + 1) + min;
        set.add(randomNum);
    }
    Integer[] intArray= set.toArray(new Integer[set.size()]);
    Arrays.sort(intArray);
    for(int i=0;i<size;i++){
        System.out.println(intArray[i]+" ");    
    }
    }
}
Integer[] arr = new Integer[7];
set.toArray(arr);
您可以使用集合来实现唯一的数字。例如,您可以尝试以下方法:

import java.util.Arrays;
import java.util.HashSet;
import java.util.Random;
import java.util.Set;

public class TotoMachine {
    public static void main(String[] args) {
        int[] array = new int[7];
        Random rand = new Random();
        Set<Integer> set = new HashSet<>();
        while (set.size() < array.length) {
            set.add(rand.nextInt(65) + 1);
        }
        int i = 0;
        for (Integer integer : set) {
            array[i] = integer;
            i++;
        }
        Arrays.sort(array);
        System.out.println(Arrays.toString(array));
    }
}
我建议你使用集合,特别是集合。您可以创建一个函数并添加所需数量的随机值。然后您可以将这些值添加到已排序的。大概

Random rand = new Random();
final int SIZE = 7;
Set<Integer> set = new LinkedHashSet<>(SIZE);
while (set.size() < SIZE) {
    set.add(rand.nextInt(65) + 1);
}
System.out.println(set);
Set<Integer> sortedSet = new TreeSet<>(set);
System.out.println(sortedSet);
您可以使用Set data structure以这种方式生成唯一的随机数:

将每个新的随机元素添加到集合中,然后只将其添加到 数组,如果它是唯一的元素

我希望这能解决你的问题。

试试这个

public static void main(String[] args) {
    Set<Integer> set = new TreeSet<>();
    Random rand = new Random();
    while (set.size() < 7)
        set.add(rand.nextInt(65) + 1);
    System.out.println(set);
}

如果不使用集合:您可以这样做

生成随机数

检查数组以查看是否存在随机数

如果不存在-将随机数插入数组

如果存在,生成新的随机数并重复上述步骤

执行此操作,直到阵列填充到容量为止

这种方法可以通过递归变得更加甜美

否则使用集合:集合不包含任何重复项


然后可以将集合转换为数组,如一些示例所示

你到底想做什么,插入随机数本身就足够了,无需再次洗牌。但我的输出数可能是重复的,只有洗牌才能使其唯一,对吗?假设你需要检查数组中的现有数字,并仅在其为新数字时插入。是的,但你是在数组后打印数字。sortarray;这将对它们进行排序,因此洗牌不会有任何重要性。Suffle不会使其唯一,您需要使用set或手动检查如果一个数字生成两次,则该数字可能会少于7个
List<Integer> list = set.stream().sorted().collect(Collectors.toList());
System.out.println(list);
public static void main(String[] args) {
    int[] array = new int[7];
    int randomNum;
    Set<Integer> numbers = new HashSet<>(); //Set of unique elements
    Random rand = new Random();
    for (int i = 0; i < array.length; i++){
        randomNum = rand.nextInt(65) + 1;
        numbers.add(randomNum);
        if(!numbers.contains(randomNum)){ // if unique element add it to array
            array[i] = randomNum;
        }
        else{    // keep generating new random numbers until you get unique element
            while(numbers.contains(randomNum)){
                randomNum = rand.nextInt(65) + 1;
            }
            numbers.add(randomNum);
            array[i] = randomNum;
        }
     }
    Arrays.sort(array);
    System.out.println(Arrays.toString(array));            
}
public static void main(String[] args) {
    Set<Integer> set = new TreeSet<>();
    Random rand = new Random();
    while (set.size() < 7)
        set.add(rand.nextInt(65) + 1);
    System.out.println(set);
}