当前位置: 代码迷 >> J2SE >> 如何用JAVA声称50以内不重复的随机数
  详细解决方案

如何用JAVA声称50以内不重复的随机数

热度:306   发布时间:2016-04-24 17:25:16.0
怎么用JAVA声称50以内不重复的随机数
怎么用JAVA声成50以内不重复的随机数

------解决方案--------------------
使用set,你把随机生成的数,放到set中去就行了,你判断set的size(),需要多少,你就看size多大,然后退出循环就行了
------解决方案--------------------

int x
x=(int)(Math.random())*100;
if(x> 50) return x-50;
else return x;

------解决方案--------------------
Set <Integer> src=new HashSet <Integer> ();
while(src.size() <50){
Integer temp=new Random().nextInt(50);
src.add(temp);
}
for(Integer i:src){
System.out.println(i);
}
------解决方案--------------------
import java.util.*;

public class Test {
public static void main(String[] args){
ArrayList arr = new Test().getRandom(50);
Iterator it = arr.iterator();
while(it.hasNext()){
System.out.println(it.next());
}
}
public ArrayList getRandom(int num){
ArrayList randomNum = new ArrayList();
Random random = new Random();
int temp = 0;
for (int i = 0;i < num; i ++){
temp = random.nextInt(num);
int nums = temp + 1;
if (randomNum.indexOf(new Integer(nums)) == -1){
randomNum.add(new Integer(nums));
}else{
i -- ;
}
}
return randomNum;
}
}
------解决方案--------------------
int[] nums=new int[50];
nums[0]=(int)(Math.random()*50);
for(int i=1;i <nums.length;i++){
boolean f=false;
do{
f=false;
nums[i]=(int)(Math.random()*50);
for(int j=0;j <i;j++){
if(nums[i]==nums[j]){
f=true;
break;
}
}
}while(f);
}
------解决方案--------------------
把1~50放到list里,随机取小于list长度的数,然后取出该数字,remove掉那个取得的数字
------解决方案--------------------
模上50,重复删除
------解决方案--------------------
x=(int)(Math.random()*50)+1;
然后判断以前的数据是否和这个有重复.
  相关解决方案