1、生成六个不一样的随机数字
Random rand = new Random();
int[] arr = new int[6];
int i = 0;
arr[i++] = rand.nextInt(33)+1;
for (int num,j; i <arr.length ; ) {
num = rand.nextInt(33)+1;
for (j = 0; j <i ; j++) {
if(arr[j]==num){
break;
}
}
if(j==i){
arr[i++]=num;
}
}
for (int k :arr) {
System.out.print(k+"\t");
}
2、随机生成500个1~100之内的整数,统计出不重复的数值和 其重复的次数
①随机生成500个1~100之内的整数,然后新建立一个不重复数组和一个重复数组。
Random rand = new Random();
int[] count = new int[100];
int[] unique = new int[100];
int[] arr = new int[500];
int k=0;
unique[k] = rand.nextInt(100)+1;
arr[0] = unique[k];
count[k++] =1;
for (int i = 1,j; i < arr.length ; i++) {
arr[i] = rand.nextInt(100)+1;
for ( j = 0; j <k ; j++) {
if(unique[j]==arr[i]){
break;
}
}
if(j==k){
unique[k]=arr[i];
count[k++]=1;
}else{
count[j]++;
}
}
System.out.println(k+"个不重复元素");
for (int i = 0; i <k ; i++) {
System.out.println(unique[i]+":"+count[i]);
}
②利用选择排序方法
for (int m = 0,maxIx,maxValIx,t; m <k-1 ; m++) {
maxValIx = 0;//假设0为本轮最大值
maxIx = k-1-m;//本轮最大值
for (int n = 1; n <=maxIx ; n++) {
//验证并修改最大值位置
if(count[n]>count[maxValIx]){
maxValIx = n;
}
}
//如果本轮最大值未出现在最大位置,则交换
if(maxIx != maxValIx){
t=count[maxIx];
count[maxIx]=count[maxValIx];
count[maxValIx]= t;
t=unique[maxIx];
unique[maxIx]=unique[maxValIx];
unique[maxValIx]= t;
}
}
for (int i = 0; i <k ; i++) {
System.out.println(unique[i]+":"+count[i]);
}
3、10000以内的质数有多哪些?
int count=0;
for(int i = 2; i < 10000; i++){
boolean isPrime = true;
for(int j = 2; j < i; j++){
if(i % j == 0){
isPrime = false;
break;
}
}
if(isPrime){
count++;
System.out.print(i+"\t");
}
}System.out.println("\n"+"一共有"+count+"个质数");