急:java中如何产生随机数而不发生碰撞? 可以这样,先把1-21存入Vector,再随机抽,抽一个删一个,产生的范围也相应的减少1,直到只有一个为止 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 一个简单的方法 数组保存,第一次随机下标0到n-1, 把数组最后的一个数字填充到被取掉的位置上, 之后呢就继续随机数组下标0到n-2以前在csdn上看到的. /*public static void main(String[] args) { //int[] num ={22,33,44,32,99,56}; int []num=new int[4]; for(int k=0;k<num.length;k++) num[k]=k+1; int n = num.length; int[] result = new int[n]; for(int i=0;i<result.length;i++) { int r = (int)(Math.random()*n); result[i] = num[r]; num[r] = num[n-1]; //move the last element to the location r. n--; System.out.print(result[i]+" "); //print } }*/ 将产生的随机数放在hashtable中,每次判断一下,如果有就跳过. 用Vecotor,HashTable都是可以的,你把取出来的数先用它们存起,然后再随机产生一个数,再去比较,如存在相同的,就重新再产生一个随机数,如果不存呢,则加入。这是思想,至于编程实现,岂不是一件很简单的事情啦! java的ramdom 如果知时间内调用会产生重复,楼主你必须每次调用中sleep100毫秒就行 反射机制+factory模式 web程序 访问莫名变慢? jacob调用DLL里面的方法 如何做一个能截取MP3文件的程序? 文本框只允许数字输入,限制英文输入 java制作电子图章,如何画弧形的公司名称??? 一个关于操作符的面试题 jcreate3 注册号 怎么会找不到呢? 有谁告之哪有java的编码规范的好文章,保证给分!!!肯请各位大侠不吝赐教!!谢了先 一个关于Applet的问题,请高手赐教!! 如何让小程序完全隐藏,只通过热键(自定义的热键)才能调出来
第一次随机下标0到n-1, 把数组最后的一个数字填充到被取掉的位置上,
之后呢就继续随机数组下标0到n-2
以前在csdn上看到的. /*public static void main(String[] args) {
//int[] num ={22,33,44,32,99,56};
int []num=new int[4];
for(int k=0;k<num.length;k++)
num[k]=k+1;
int n = num.length;
int[] result = new int[n];
for(int i=0;i<result.length;i++) {
int r = (int)(Math.random()*n);
result[i] = num[r];
num[r] = num[n-1]; //move the last element to the location r.
n--;
System.out.print(result[i]+" "); //print
}
}*/
你把取出来的数先用它们存起,然后再随机产生一个数,再去比较,如存在相同的,就重新再产生一个随机数,如果不存呢,则加入。
这是思想,至于编程实现,岂不是一件很简单的事情啦!