java伪随机数生成算法-伪静态在线生成
问:请问用java从1-33个整数中随机抽取6个数字 且不重复 1-16随机抽取一个数,给小球?答:只是难免埋怨时间的手,把相爱写成相爱过,结局的太多错过的问:java 打印六个不重复的随机数。答:sum=(int)(Math.random()*33 + 1) 就是取一个int值 在1-33之间! 第一次的时候 a[0]-a[5] 都是0所以那个for一定不会进! 从第二次开始 a[0]-a[5]就开始有值了, 那么就拿sum值 用for循环 去和a[0]-a[5]依次进行比较, 如果发现有想同的,说明随机数重复了java伪随机数生成算法, 那么这一次寻找就不算数,就要进行i--的操作 同时 将标志值设为0,不入到a[]数组中~ 就这个意思了!答:总体的意思是出来的随机数都放入数组中,如果新出的随机数跟数组中的元素有重复的话就不放入数组中。
因为下面的if(info)等同于if(info=true),只有当info为true的时候才会把新得到的随机数放入数组当中
如果新得到的随机数sum和数组中的元素有重复,那么info就为false,就不会把该数字放入数组当中答:内循环是将当前生成的随机数与数组a中已生成的数字作比较,如果存在相同的数字,则将infor变成false,infor为false时,则不会将当前随机数存到a中。
另外java伪随机数生成算法,你这个算法不能保证最后生成6个的数字。答:sum==a[j],就是判断sum与每一个数组元素是否相等问:java随机生成6位数,要求每次产生的随机数与已生成的随机数不重复,小弟觉得用random产生的数可能重复。答:packagebaidu;
importjava.io.*;
importjava.util.HashSet;
importjava.util.Set;
/**
*
*@authorstcdasqy
*/
publicclassBaidu{
/**
*@paramargsthecommandlinearguments
*/
publicstaticvoidmain(String[]args){
Setm=newHashSet();
for(inti=0;iinta;
do{
a=(int)(Math.random()*1000000);
}while(m.contains(a));
m.add(a);
System.out.println(a);
}
}
}这样就可以了答:有好几种方法,
1 两层循环去重复
2 利用hashset的不重复的特性
3 排除已随机到的数
还有其他的,你可以再搜搜,希望能帮助你
详见