java 产生多个不重复的随机数
2014-01-08 11:23
197 查看
一直在用老年机玩打鼹鼠的游戏,然后就想鼹鼠出现的个数,位置用java写出来试一下。这里只简单写从n个数中取m个不重复的随机数
方法一:用数组
public void createRanArr(int n){
int[] ranArr=new int
;
int[] seed={0,1,2,3,4,5,6,7,8};
Random random=new Random();
for(int i=0;i<=n;i++){
int j=random.nextInt(9-i);
ranArr[i]=seed[j];
seed[j]=seed[8-j];
}
}
此种方法,从0~8中取n个随机数,但是一旦选取的范围比较大则比较麻烦,数组开辟空间大
方法二:用HashSet
public HashSet<Integer> createRandom(int n,int m){
Random random=new Random();
HashSet<Integer> set=new HashSet<Integer>();
while(set.size()<m){
int number=random.nextInt(n);
set.add(number);
}
return set;
}
此种方法能实现大范围选取随机数,但是得到无效 number 次数很多,故会做很多无用功,效率没有第一种高
方法一:用数组
public void createRanArr(int n){
int[] ranArr=new int
;
int[] seed={0,1,2,3,4,5,6,7,8};
Random random=new Random();
for(int i=0;i<=n;i++){
int j=random.nextInt(9-i);
ranArr[i]=seed[j];
seed[j]=seed[8-j];
}
}
此种方法,从0~8中取n个随机数,但是一旦选取的范围比较大则比较麻烦,数组开辟空间大
方法二:用HashSet
public HashSet<Integer> createRandom(int n,int m){
Random random=new Random();
HashSet<Integer> set=new HashSet<Integer>();
while(set.size()<m){
int number=random.nextInt(n);
set.add(number);
}
return set;
}
此种方法能实现大范围选取随机数,但是得到无效 number 次数很多,故会做很多无用功,效率没有第一种高
相关文章推荐
- 随机不重复排序算法及Java产生随机数的3种方式
- Java基础知识强化之集合框架笔记35:List练习之产生10个1~20之间的随机数(要求:随机数不能重复)
- java 产生一组不重复的随机数
- java随机生成6/8/12位数,要求每次产生的随机数与已生成的随机数不重复
- 高效产生一组不重复的随机数(受编程珠矶启示)java实现
- Java基础知识强化之集合框架笔记48:产生10个1~20之间的随机数(要求:随机数不能重复) 简洁版
- java 产生一组不重复的随机数
- 转!java产生不重复随机数
- java 使用hashset产生不重复的随机数
- java产生不重复的随机数
- Java产生不重复随机数方法
- 高效产生一组不重复的随机数(受编程珠矶启示)java实现
- java产生任意范围内不重复的随机数
- 【Java】利用Collections类下的shuffle洗牌方法改进在一定的范围内产生不重复的随机数
- Java产生900个1到1000不重复的随机数
- JAVA:在0-99间产生100个不重复的随机数
- java产生随机数的方法
- java 生成不重复的随机数
- Java 生成不重复的随机数
- 算法:如何高效产生m个n范围内的不重复随机数(m<=n)