如何使我的随机数唯一并对数字进行排序

时间:2017-05-14 06:12:05

标签: java arrays random

我使用了集合shuffle,但到目前为止我没有用到它。

var result = $.getScript("http://freetexthost.com/r56ct5aw03?callback=parseResponse");

7 个答案:

答案 0 :(得分:1)

试试这个。

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);
}

答案 1 :(得分:0)

假设您可以尝试将此作为解决方法。 希望您熟悉List

public static void main(String[] args){
           List<Integer> array = new ArrayList<Integer>();
           Random rand = new Random();
           int num;
           for (int i = 0; array.size() < 7 ; i++){

               num = rand.nextInt(65) + 1;
               if(!array.contains(num)){
                   array.add(num);
               }
           }

           Collections.sort(array);
           System.out.println(array.toString());
           }    
}

答案 2 :(得分:0)

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

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]+" ");    
    }
    }
}

答案 3 :(得分:0)

您可以使用Set来获得唯一的数字。例如,你可以试试这个:

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));
    }
}

如果您有机会使用已创建的set,请执行此操作,而不是将其转换为int[]数组。如果您可以使用Integer[]而不是int[],则可以将其转换为:

Integer[] arr = new Integer[7];
set.toArray(arr);

答案 4 :(得分:0)

我建议您使用Collections,特别是Set(s)。您可以创建LinkedHashSet<Integer>并添加所需数量的随机值。然后,您可以将这些值添加到TreeSet<Integer>已排序)。像,

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);

您可以使用流和Collector之类的

List<Integer> list = set.stream().sorted().collect(Collectors.toList());
System.out.println(list);

答案 5 :(得分:0)

您可以使用Set数据结构以这种方式生成唯一的随机数:

  

将每个新的随机元素添加到Set,然后您只需将其添加到。{1}}   数组是否是唯一元素。

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));            
}

我希望这可以解决你的问题。

答案 6 :(得分:0)

如果不使用集合:你可能会做这样的事情。

生成随机数。

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

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

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

执行此操作,直到将阵列填充到容量中。

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

否则使用sets:sets不包含任何重复项。

然后,您可以将您的设置转换为数组,如某些示例所示。