创建范围内的随机数

时间:2013-10-29 16:01:00

标签: java

我是Java的新手,我坚持这个,我使用的是公式:

min + (int)(Math.random()*(max-min+1))

我必须编写语句,将随机整数分配给以下范围内的变量x

  1. 1 < x <= 8
    1分是min,8分是max

    我是否更正为1 + (int)(Math.random()*(8-1+1))

  2. -5 < x <= 3
    3为最小值,-5为最大值

    这将是3 + (int)(Math.radom()*(-5-3+1))

  3. 非常感谢任何帮助。

4 个答案:

答案 0 :(得分:3)

您希望公式采用[0..1)范围内的实数,并返回[1..8]范围内的整数。

  • random()选择实数时,范围为[0..1)
  • 并将它乘以8,
  • 您获得[0.0 .. 8.0)范围内的值。
  • 然后你转换为(int),你有[0 .. 7]范围内的整数,
  • 因为使用'floor'步骤函数转换为(int)轮。
  • 添加一个。

答案 1 :(得分:0)

使用以下代码。它将生成0到最大值之间的nos。

 Random generator = new Random(); //Creates a new random number generator
  for(int i=0; i<100; i++){
      /**
       *Returns a pseudorandom, uniformly distributed int value
       * between 0 (inclusive) and the specified value (exclusive), drawn from
       * this random number generator's sequence
       */
        System.out.println(generator.nextInt(100));
  }

答案 2 :(得分:0)

  1. 获取范围 min,max ] 的随机值,这与问题相同。
  2. 如果使用 JDK 1.7 版本,那么您可以使用一行代码来实现此类功能:

    ThreadLocalRandom.current()。nextInt(min,max)+1

    如果JDK版本低于1.7,我们可以使用以下方式实现它。

    随机随机= new Random();

    random.nextInt(max - min)+ min +1;

    2.获取范围 [ min,max )的随机值

    使用, ThreadLocalRandom.current()。nextInt(min,max)

    random.nextInt(max - min)+ min;

答案 3 :(得分:0)

Math.random()在0到1之间给出。乘以你的范围,范围的大小,而不是绝对值。如果你想1-10那是9,如果你想要0-10那是10,如果你想要5-7那是2,等等。

然后加或减从0到起始值。

如果你想要0-9那么你已经完成了(你应该在上一步中乘以9)

如果你想要1-10则添加1

如果你想要-5到5然后减去5

如果你想要5-7那么(Math.random()* 2)+5;