生成介于给定范围和0之间的数字

时间:2019-03-21 08:56:50

标签: java

我正在尝试在给定范围和0之间生成一个随机数。 下面给出的代码帮助我在给定范围之间生成一个数字。

(int)(Math.random() * 13 + 4);

是否可以修改此代码以生成4到10以及0之间的值

3 个答案:

答案 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);