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

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了JAVA 获取一个四位随机数(并且四位数不重复),并说明原理和算法相关的知识,希望对你有一定的参考价值。

每次获取一个一位数的随机数存在一个 int[4]的整型数组,如果新获取的随机数在整型数组中已经存在了,就再获取一次(使用while循环)。然后把int[4]的数转换成四位数(这个应该简单吧,使用sum=sum*10+a[i]) 参考技术A 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);

参考技术B 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


可以直接运行

参考技术C 想法: random(0,10).
取4次,每取一次,放入list
每次放入做判定,list里是否已经有此数,如果已存在继续取。

4个string相加 然后 你可以parse成你想要的格式。
参考技术D random类 可以先生成 在判断有重复就重新生成

以上是关于JAVA 获取一个四位随机数(并且四位数不重复),并说明原理和算法的主要内容,如果未能解决你的问题,请参考以下文章

asp.net生成四位数的随机数,并且保证48小时内不会重复

如何在SQL里生成四位随机数?

生成一个四位数的随机验证码

JAVA中怎么随机产生一个不重复的四位数

Java编写一个四位数的随机验证码

请问大家如何在SQL里生成四位随机数?