JAVA 获取一个四位随机数(并且四位数不重复),并说明原理和算法

如题所述

每次获取一个一位数的随机数存在一个 int[4]的整型数组,如果新获取的随机数在整型数组中已经存在了,就再获取一次(使用while循环)。然后把int[4]的数转换成四位数(这个应该简单吧,使用sum=sum*10+a[i])
温馨提示:答案为网友推荐,仅供参考
第1个回答  2012-11-28
import java.util.*;
public class Get4Number {
public static void main(String[] args) {
System.out.println(getNumber());
}
/** 得到一个0-9的随机数 */
private static int getRandomNumber() {
return (int) ((Math.random() * 100) % 10);
}
/** 得到一个四位无重复数字的数 */
private static int getNumber() {
Set<Integer> set = new HashSet<Integer>();
while (true) {
int a = getRandomNumber();
set.add(new Integer(a));//Set里面的元素是不重复的,如果重复是存不进去的。
if(set.size()>3)
break;
}
int index = (int) ((Math.random() * 100) % 4);
if(index==0){index+=1;}
Integer[] arr = new Integer[set.size()];
set.toArray(arr);
String s = "";
if(arr[0].intValue()==0){//如果第一位是0,则随机和后面三位交换
Integer temp = arr[0];
arr[0] = arr[index];
arr[index] = temp;
}
for(int i=0;i<arr.length;i++){
s += arr[i].intValue();
}
return Integer.parseInt(s);
}
}
第2个回答  2017-08-17
public class fournum {

public static void main(String[] args) {
int[] num = new int[4];
for (int i = 0; i < 4; i++) {
num[i] = (int)Math.floor(Math.random()*10);

for(int j=0;j<i;j++){
while(num[i]==num[j])
num[i] = (int)Math.floor(Math.random()*10);
}
}
int answer = num[0]*1000+num[1]*100+num[2]*10+num[3];
System.out.println(answer);
System.out.println((int)Math.floor(Math.random()*10));
}

public fournum() {
// TODO Auto-generated constructor stub
}

}

可以直接运行

第3个回答  2012-11-28
想法: random(0,10).
取4次,每取一次,放入list
每次放入做判定,list里是否已经有此数,如果已存在继续取。

4个string相加 然后 你可以parse成你想要的格式。本回答被网友采纳
第4个回答  2012-11-28
random类 可以先生成 在判断有重复就重新生成