黑马程序员技术交流社区

标题: Random随机数 [打印本页]

作者: 孙运强    时间: 2011-11-1 22:47
标题: Random随机数
有那几个类可以产生随机数有那几个,

怎么产生一个随机数在一定范围内,例:
产生一个5到10之间的随机数。
int MAX=10;
for(iint i=0;i<=MAX;i++){
       //在此产生一个大于当前  i ,小于 MAX的随机数
}
怎么弄?

作者: 宁超    时间: 2011-11-1 23:11
本帖最后由 宁超 于 2011-11-1 23:12 编辑
  1. int MAX = 10;
  2.                 for (int i = 0; i <= MAX; i++)
  3.                 {
  4.                         int j;
  5.                         j = new Random().nextInt(MAX);
  6.                         System.out.println(j);               
  7.                 }
复制代码
这样就行了,如果是j换成i的话就成死循环了。因为i的值每次循环都在变化。
作者: 孙运强    时间: 2011-11-2 00:03
宁超 发表于 2011-11-1 23:11
这样就行了,如果是j换成i的话就成死循环了。因为i的值每次循环都在变化。 ...

这不能保证每次产生的 j  都大于   i     ?
我想每次   j   都大于   i  ,  i  每次循环都在变  
作者: 祁焱    时间: 2011-11-2 00:23
学习了。。。
作者: 李建雄    时间: 2011-11-2 02:09
本帖最后由 李建雄 于 2011-11-2 02:15 编辑

产生降随机数的类有两个,一个是Math类,一个是Random类  
使用Math类的方法如:Math.random();  产生的数是0到1之间的小数,你可以用它再乘以一个数,如100,想想你会得到什么数?


下面这个按你的要求做了,好像不完美,,但只有这样了

int MAX=10;
for(int i=0;i<=MAX;i++){
                       
         int j=MAX-i-1;
        if(j==0)
            break;  //当i==9时必须退出,因为没有9到10之间的int值了
       int random=(new Random().nextInt(j))+1+i;
                       
        System.out.println(random);
        //在此产生一个大于当前  i ,小于 MAX的随机数
}
作者: 宁超    时间: 2011-11-2 08:40
孙运强 发表于 2011-11-2 00:03
这不能保证每次产生的 j  都大于   i     ?
我想每次   j   都大于   i  ,  i  每次循环都在变   ...

还是循环10次?
作者: 孙运强    时间: 2011-11-2 09:05
宁超 发表于 2011-11-2 08:40
还是循环10次?

哦,谢谢指点,:)
作者: lipanfeng    时间: 2011-11-2 10:50
double d=Math.Random();//产生一个double随机数(0-1)
5-10之间的随机数
int m=(int)(d)*5+5




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2