java 在两个范围内取一个随机数

比如在{1,50}{100,150}这两个区间内随机取一个数,应该怎么写?... 比如在 {1, 50} {100, 150} 这两个区间内随机取一个数,应该怎么写? 展开
 我来答
jiaxin8000xxsc
2017-07-14 · TA获得超过3.6万个赞
知道大有可为答主
回答量:4009
采纳率:88%
帮助的人:945万
展开全部

java在两个数范围内取一个随机数方式:

  1. 可以使用Math.random()方法来产生一个随机数,这个产生的随机数是0-1之间的一个double,把它乘以一定的数,比如说乘以100,就是0-100以内的随机数

  2. 用java.util包里面提供的Random类,新建一个Random的对象来产生随机数,可以产生随机整数、随机float、随机double,随机long。

举例:

public class RandomDemo {
    public static void main(String[] args) {
        int max=20;
        int min=10;
        Random random = new Random();
        /*random.nextInt(max)表示生成[0,max]之间的随机数,然后对(m        ax-min+1)取模。
        以生成[10,20]随机数为例,首先生成0-20的随机数,然后对(20-1        0+1)取模得到[0-10]之间的随机数,然后加上min=10,最后生成的        是10-20的随机数 */
        int s = random.nextInt(max)%(max-min+1) + min;
        System.out.println(s);
    }
}
chizeman
推荐于2018-01-28 · 超过11用户采纳过TA的回答
知道答主
回答量:21
采纳率:100%
帮助的人:19.6万
展开全部
Math.random() 方法能返回大于等于 0.0 且小于 1.0 double 型数值。
即它的取值区间为[0,1),包括 0 不包括 1。
你需要做的是把范围放大,怎么放大一个数?当然是用乘法啦。
放大多少,就看你取值区间的范围多大,以第一个区间为例是[1,50],那么变化范围是 50-1=49
那么就是 Math.random()*49,这样就能得到 [0,49] 范围里的数了。但是你要的是 [1,50] 怎么办?
很简单嘛,每个得出来的数都加上取值区间的第一个数,在这里是加 1 ,就OK了。
所以最后你要的表达式就是:Math.random()*49+1 ,就能得到 [1,50) 的取值了。
有两点要注意的:
第一,这里 50 这边是小括号,也就是不包含在内的。需要它的话,你要是用取整或者增大变化范围,比如到 51 的办法。
第二,这里得到的数值类型是 double 型的,如果你需要其它类型,也要进一步处理。
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
chizeman
2017-12-31 · 超过11用户采纳过TA的回答
知道答主
回答量:21
采纳率:100%
帮助的人:19.6万
展开全部
Math.random() 方法能返回大于等于 0.0 且小于 1.0 double 型数值。
即它的取值区间为[0,1),包括 0 不包括 1。
你需要做的是把范围放大,怎么放大一个数?当然是用乘法啦。
放大多少,就看你取值区间的范围多大,以第一个区间为例是[1,50],那么变化范围是 50-1=49
那么就是 Math.random()*49,这样就能得到 [0,49] 范围里的数了。但是你要的是 [1,50] 怎么办?
很简单嘛,每个得出来的数都加上取值区间的第一个数,在这里是加 1 ,就OK了。
所以最后你要的表达式就是:Math.random()*49+1 ,就能得到 [1,50) 的取值了。
有两点要注意的:
第一,这里 50 这边是小括号,也就是不包含在内的。需要它的话,你要是用取整或者增大变化范围,比如到 51 的办法。
第二,这里得到的数值类型是 double 型的,如果你需要其它类型,也要进一步处理。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
匿名用户
2013-01-08
展开全部
int random=(int)(Math.random()*50)+1;//产生1-50任意随机整数
int random=(int)(Math.random()*(max+1-min)+min//产生min-max任意随机整数
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
bd9006
2013-01-08 · TA获得超过2.5万个赞
知道大有可为答主
回答量:4.8万
采纳率:63%
帮助的人:1.6亿
展开全部
java.util.Random rnd=.............

其实是和 一个区间相似

int a=1+rnd.nextInt(49);
int b=100+rnd.nextInt(50);

//取舍一下吧,再用
return rnd.nexeBoolean()? a:b;
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(4)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式