如何产生不重复的随机数
如::
for(int i = 0; i < 1000; i++) {
int generat = Math.round(.......);
//这里产生的这个数不能有重复的。至少在15这之内不能有重复的产生。产生0--176之间的数。
}
问题点数:20、回复次数:13Top
1 楼zawx(submarine)回复于 2005-06-03 14:38:43 得分 0
既然是随机,如何不重复?
大不了,重复的你再取一个数喽Top
2 楼irvine007(┣━┫Rvine)回复于 2005-06-03 15:07:28 得分 0
Random()?好像是根据当前系统时间产生的,不知效果如何?Top
3 楼Z_Beginner(探索中)回复于 2005-06-03 15:10:35 得分 0
加一个判断,如果新产生的随机数和前面的有重复,就将i-1;然后continue这个循环。Top
4 楼duanzilin(寻)回复于 2005-06-03 15:24:43 得分 10
你可以把随机产生的数放到一个List里,重复的不放,最后List里的数都不重复了
List list = new ArrayList();
java.util.Random random = new java.util.Random();
while (list.size() < 177) {
Integer ii = new Integer(random.nextInt(177));
if (!list.contains(ii)) {
list.add(ii);
}
System.out.println("-----" + list.toString());Top
5 楼duanzilin(寻)回复于 2005-06-03 15:26:22 得分 0
少了个括号
List list = new ArrayList();
java.util.Random random = new java.util.Random();
while (list.size() < 177) {
Integer ii = new Integer(random.nextInt(177));
if (!list.contains(ii)) {
list.add(ii);
}
System.out.println("-----" + list.toString());
}Top
6 楼skycncomp(闭关修练到年底)回复于 2005-06-03 17:41:01 得分 0
我是一个方法调用产生随机数的方法。因为要放到for里面。Random是根居时间产生的数。for又太快。总是一样的数。Top
7 楼skycncomp(闭关修练到年底)回复于 2005-06-03 17:41:35 得分 0
我是一个方法调用产生随机数的方法。因为要放到for里面。Random是根居时间产生的数。for又太快。总是一样的数。Top
8 楼skycncomp(闭关修练到年底)回复于 2005-06-03 17:43:16 得分 0
我只要一个数。楼上的未免有点大题小做了。是有另一个方法要调用。返回一个植。Top
9 楼rolandy(风之纹章)回复于 2005-06-03 17:46:05 得分 0
没错,系统时间的毫秒数Top
10 楼skycncomp(闭关修练到年底)回复于 2005-06-03 21:17:53 得分 0
有没有什么好的办法可以实现呀。
像下面这样
public void value() {
for(int i = 0; i < 100; i++) {
int k = generat();
//这里的k在一面次内一般就是1到2样的。因为系统时间太快。我想要产生不同的值。
}
}
public int generat() {
返回一个随机数
}Top
11 楼apollo333()回复于 2005-06-04 02:53:38 得分 10
用Random很方便啊。
import java.util.Random;
public class TestForRandom {
private Random r = new Random();
public static void main(String args[]){
TestForRandom t = new TestForRandom();
t.value();
}
public void value(){
for(int i = 0;i<100;i++)
System.out.println(generate());
}
public int generate(){
return r.nextInt(177);
}
}
不明白为什么不能用Random?
结果也是基本符合楼主的要求啊。
如果是绝对不能有重复的数,就得按duanzilin(寻)说的做啊。而且也不复杂啊。Top
12 楼jlljmy2000(寒山寺)回复于 2005-06-04 08:09:11 得分 0
顶楼上的Top
13 楼jihanzhong(逍遥)回复于 2005-06-04 09:02:28 得分 0
不要用默认种子,把得到的随机数传进去当种子好了Top




