CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
可用分押宝游戏火热进行中... 专题改版:Java Web 专题
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  Java >  J2SE / 基础类

如何产生不重复的随机数

楼主skycncomp(闭关修练到年底)2005-06-03 14:36:38 在 Java / J2SE / 基础类 提问

如::  
   
  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

相关问题

  • 请问如何产生无重复的随机数列?
  • 如何产生不重复的随机数?
  • 如何产生随机数且不重复?
  • 如何产生随机数?
  • 如何产生随机数???
  • 请教:如何快速产生一个1-n的无重复随机数序列
  • 如何产生不同的随机数
  • 如何产生一个随机数?
  • 如何产生随机数的问题
  • 请问随机数如何产生?

关键词

得分解答快速导航

  • 帖主:skycncomp
  • duanzilin
  • apollo333

相关链接

  • CSDN Java频道
  • Java类图书
  • Java类源码下载

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
世纪乐知(北京)网络技术有限公司 版权所有, 京 ICP 证 020026 号
北京创新乐知广告有限公司 提供技术支持
Copyright © 2000-2007, CSDN.NET, All Rights Reserved
GongshangLogo