A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 孙运强 黑马帝   /  2011-11-1 22:47  /  3897 人查看  /  9 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

有那几个类可以产生随机数有那几个,

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

9 个回复

倒序浏览
本帖最后由 沙铁健 于 2011-11-1 23:04 编辑
  1.          Random   sj   =   new   Random();
  2.                   int   i   =   5   +  sj.nextInt(5);
  3.                   System.out.println(i);
复制代码
sj.nextInt(5);是产生大于等于0小于5之间的数  加上5就是大于等于5小于10之间的数了
回复 使用道具 举报
本帖最后由 宁超 于 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-1 23:11
这样就行了,如果是j换成i的话就成死循环了。因为i的值每次循环都在变化。 ...

这不能保证每次产生的 j  都大于   i     ?
我想每次   j   都大于   i  ,  i  每次循环都在变  
回复 使用道具 举报
学习了。。。
回复 使用道具 举报
本帖最后由 李建雄 于 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:06
7#
孙运强 发表于 2011-11-2 00:03
这不能保证每次产生的 j  都大于   i     ?
我想每次   j   都大于   i  ,  i  每次循环都在变   ...

还是循环10次?
回复 使用道具 举报
沙铁健 黑马帝 2011-11-2 08:44:52
8#
....你在for里加个if不就可以吗
用宁超的那个
  1.                 int MAX = 10;
  2.                 int j=0;
  3.         for (int i = 0; i <= MAX; i++)
  4.         {
  5.                 j = new Random().nextInt(MAX);
  6.                 if(j>i)
  7.                 System.out.println(j);               
  8.         }
复制代码
回复 使用道具 举报
孙运强 黑马帝 2011-11-2 09:05:41
9#
宁超 发表于 2011-11-2 08:40
还是循环10次?

哦,谢谢指点,:)
回复 使用道具 举报
double d=Math.Random();//产生一个double随机数(0-1)
5-10之间的随机数
int m=(int)(d)*5+5
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马