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

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

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

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

9 个回复

倒序浏览
本帖最后由 宁超 于 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 00:03
这不能保证每次产生的 j  都大于   i     ?
我想每次   j   都大于   i  ,  i  每次循环都在变   ...

还是循环10次?
回复 使用道具 举报
孙运强 黑马帝 2011-11-2 09:05:41
7#
宁超 发表于 2011-11-2 08:40
还是循环10次?

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