我使用集合随机播放,但到目前为止它不起作用。
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));
}
}
试试这个。
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);
}
假设您可以尝试这样做作为解决方法。希望你熟悉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());
}
}
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);
我建议你使用 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);
这可能有效:将生成的随机数添加到 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]+" ");
}
}
}
Set
数据结构通过以下方式制作唯一的随机数:
将每个新的随机元素添加到
Set
然后仅将其添加到 数组,如果它是唯一的元素。
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));
}
我希望这能解决你的问题。
如果不使用集合:你可以做这样的事情。
生成随机数。
检查数组以查看是否存在随机数
如果不存在,则将随机数插入数组。
如果存在,则生成新的随机数并重复上述步骤。
执行此操作,直到阵列填充到容量为止。
这种方法可以通过递归变得更加甜蜜。
否则使用集合:集合不包含任何重复项。
然后,您可以将集合转换为数组,如一些示例所示。