我试图弄清楚如何在数组中生成和存储10个随机数,其中数字是两位数,每个数字在0-7范围内。例如,10,23,35,77都可以,但不是1,78,89,99。而且,我想确保所有数字都是唯一的。这是我到目前为止所做的......
import java.util.Random;
public class RandomNum{
public static void main(String[] args){
Random rand=new Random();
int[] randomFirstDigit=new int[10];
int[] randomSecondDigit=new int[10];
for(int i=0;i<10;i++){
randomFirstDigit[i]=rand.nextInt(7-1+1)+1;
}
for(int i=0;i<10;i++){
randomSecondDigit[i]=rand.nextInt(7-1+1)+0;
}
int[] randomArr=new int[10];
for(int i=0;i<10;i++){
randomArr[i]=(randomFirstDigit[i]*10)+randomSecondDigit[i];
}
for(int i=0;i<=randomArr.length;i++){
System.out.println(randomArr[i]);
}
}
}
上述代码的主要问题是,有时数组值不是唯一的。换句话说,两个相同的数字存储在数组中,如23,23。
任何人都可以帮我解决问题。
提前感谢您的帮助。
答案 0 :(得分:1)
更简单且计算量更低的解决方案是一次生成一个数字,然后将其附加到字符串。之后你可以将它转换为整数。
要准确生成10个唯一数字,我们可以将生成的每个数字添加到HashSet,其中每个元素必须是唯一的。我们可以继续这个,直到HashSet有10个元素。
/**
* The `sizeof` an element in array 'arr'.
*/
#define ELEMSIZE(arr) sizeof(*arr)
/**
* The number of elements in array 'arr'.
*/
#define ARRAYSIZE(arr) sizeof(arr)/ELEMSIZE(arr)