黑马程序员技术交流社区

标题: 提问 java生成m到n的随机数 [打印本页]

作者: 惜缘1989    时间: 2016-2-29 23:08
标题: 提问 java生成m到n的随机数
1,用Random:  Random random =new Random();
                          int a = m+(int)random.nextDouble( )*(n-m);
2,用Math: int a = m+(int)Math.random( )*(n-m);


初学,不知道对不对,求大神解释

作者: 惜缘1989    时间: 2016-3-1 22:33
强转后边的需要加(),强转的优先级高于运算符。int a = m+(int)(random.nextDouble( )*(n-m));
作者: 惜缘1989    时间: 2016-3-1 22:34
2,用Math: int a = m+(int)(Math.random( )*(n-m));    可以实现的  实验了
作者: 小笼包    时间: 2016-3-1 23:23
思想是对的
作者: fagug    时间: 2016-3-2 00:41
Random random =new Random();
int a =random.nextInt(n-m)+m;
作者: 天赐潇潇    时间: 2016-3-2 03:45
fagug 发表于 2016-3-2 00:41
Random random =new Random();
int a =random.nextInt(n-m)+m;

彬彬错了哦  

int a =random.nextInt(n-m+1)+m;
作者: huang_bing_hua    时间: 2016-3-2 09:06
int a = m+(int)(random.nextDouble( )*(n-m+1));
int a = m+(int)(Math.random( )*(n-m+1));
作者: xiaotvsit    时间: 2016-3-2 09:57
这是我写的程序 你可以参照一下
import java.util.Random;
//指定范围的随机数取得
public class RandomDemo{


    public static void main(String[] arsg){
       
           int begin =10;
           int end  = 30;
       
            Random r = new Random();
                //(m-n) +n +1
                int res = r.nextInt(end-begin)+begin+1;
               
                System.out.println(res);
       
        }


}
作者: 惜缘1989    时间: 2016-3-2 10:32
小笼包 发表于 2016-3-1 23:23
思想是对的

写了程序 可以实现 呵呵
作者: 惜缘1989    时间: 2016-3-2 10:34
xiaotvsit 发表于 2016-3-2 09:57
这是我写的程序 你可以参照一下
import java.util.Random;
//指定范围的随机数取得

这样也应该可以吧  另一种思路 谢谢了
作者: fagug    时间: 2016-3-2 12:14
本帖最后由 fagug 于 2016-3-2 12:21 编辑
天赐潇潇 发表于 2016-3-2 03:45
彬彬错了哦  

int a =random.nextInt(n-m+1)+m;

对,要+1,少算了后面的一个数

但是如要要算m-n之间的随机数,但是不包含m和n要怎么写?
作者: 天赐潇潇    时间: 2016-3-2 23:19
fagug 发表于 2016-3-2 12:14
对,要+1,少算了后面的一个数

但是如要要算m-n之间的随机数,但是不包含m和n要怎么写? ...

int a =random.nextInt(n-m-1)+m+1;




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