我正在尝试在给定范围和0之间生成一个随机数。 下面给出的代码帮助我在给定范围之间生成一个数字。
(int)(Math.random() * 13 + 4);
是否可以修改此代码以生成4到10以及0之间的值
答案 0 :(得分:1)
使用此值生成4到10之间的值
public static double getRandomDoubleBetweenRange(int 4, int 10){
double x = (Math.random()*((10-4)+1))+4;
return x;
}
答案 1 :(得分:0)
我怀疑这是一个家庭作业问题,因此我不会为您提供正确的答案,但会为您提供所需的工具,以便您自己回答:
公共静态double random()
返回一个带正号的大于等于的双精度值 0.0且小于1.0。从该范围内(近似)均匀分布伪随机选择返回值。
来源:https://docs.oracle.com/javase/8/docs/api/java/lang/Math.html#random--
将double转换为int会执行变窄的原始转换。在您使用的范围内,对于正数,您可以将其视为底数(删除小数点后的数字)。
如果您想了解详细信息,请参见:https://docs.oracle.com/javase/specs/jls/se7/html/jls-5.html#jls-5.1.3
答案 2 :(得分:0)
类似这样的原因。
//stream 3 random numbers from 0 to 10 and pick any of them
int random = new Random().ints(3, 0, 11).findAny().getAsInt();
//print it
System.out.println(random);
更新2:
// make a list of 0 and 4-10
List<Integer> list = Arrays.asList(0,4,5,6,7,8,9,10);
// used for picking random number from within a list
Random random = new SecureRandom();
// get random index element from a list
int randomNumber = list.get(random.nextInt(list.size()));
// print
System.out.println(randomNumber);