”java” 在两个范围内取一个随机数怎么做?
2个回答
展开全部
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 型的,如果你需要其它类型,也要进一步处理。
即它的取值区间为[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 型的,如果你需要其它类型,也要进一步处理。
展开全部
import java.util.Random;
import java.util.Scanner;
/**
* 生成一个有两个取值约束条件的整数
* 例如i在(a,b)或(c,d)范围内取值(a<b<c<d)
* @author Pink.Y
*
*/
public class test {
public static void main(String[] args) {
System.out.println("请输入取值范围:");
Scanner sc = new Scanner(System.in);
int a = sc.nextInt();
int b = sc.nextInt();
int c = sc.nextInt();
int d = sc.nextInt();
int i;
Random rd = new Random();
if(rd.nextInt(2)==1){ // i 在(a,b)范围内
i = a+rd.nextInt(b-a-1)+1;
}else{ //i 在 (c,d)范围内
i = c+rd.nextInt(d-c-1)+1;
}
System.out.println("i="+i);
}
}
import java.util.Scanner;
/**
* 生成一个有两个取值约束条件的整数
* 例如i在(a,b)或(c,d)范围内取值(a<b<c<d)
* @author Pink.Y
*
*/
public class test {
public static void main(String[] args) {
System.out.println("请输入取值范围:");
Scanner sc = new Scanner(System.in);
int a = sc.nextInt();
int b = sc.nextInt();
int c = sc.nextInt();
int d = sc.nextInt();
int i;
Random rd = new Random();
if(rd.nextInt(2)==1){ // i 在(a,b)范围内
i = a+rd.nextInt(b-a-1)+1;
}else{ //i 在 (c,d)范围内
i = c+rd.nextInt(d-c-1)+1;
}
System.out.println("i="+i);
}
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询