用java写一个随机数选取功能,每次选取的几个数不能重复,并且每次与每次选取的也不能有重复,范围是1-226。比如,以每次选10个数为一组为例,可以选3次,但是每次都不能重复。
http://www.cnblogs.com/bersaty/archive/2013/09/11/3315371.html
java洗牌算法,不同的是,他的范围是1-54,你修改为1-226就可以了。
import java.util.HashSet;
import java.util.Random;
import java.util.Set;
/**
*
* @author 凌晨
* @since jdk1.6
* @version 2016年8月5日 凌晨
*/
public class RandomDemo {
/** 随机器 */
private final Random random = new Random();
/**
* 获取随机数,范围1-max(不包括max)
*
* @param max 范围最大数(不包括)
* @return 返回的随机数
*/
public int getRandomNumber(int max) {
boolean isZero = true;
int randomNumber = 0;
while (isZero) {
if (randomNumber != 0) {
isZero = false;
} else {
randomNumber = random.nextInt(max);
}
}
return randomNumber;
}
/**
* @param args param
*/
public static void main(String[] args) {
RandomDemo demo = new RandomDemo();
Set set = new HashSet();
for (int i = 0; i < 500; i++) {
// 生成随机数
int k = demo.getRandomNumber(226);
System.out.println("生成的随机数:" + k);
if (!set.contains(k)) { // 如果之前未生成,则添加
set.add(k);
} else {
System.out.println("随机数" + k + "已存在");
}
}
System.out.println(set);
}
}
public static String getRandom(int min, int max)
{
Random random = new Random();
int s = random.nextInt(max) % (max - min + 1) + min;
return String.valueOf(s);
}
你可以传入进来,获取随机数,然后判断吃否重复。
math.random()