【问题标题】:How can I generate a random number within a certain range with Java? [duplicate]Java如何生成一定范围内的随机数? [复制]
【发布时间】:2017-11-06 20:37:59
【问题描述】:

我想在 Java 中生成一个随机数。它可以是整数、字节或浮点类型,但我真正需要的是生成一个随机数。这就是我正在做的:

  1. 生成一定范围内的随机数(例如 5 到 20)。
  2. 获取数字并将其存储在变量中。
  3. 对其进行算术运算。

代码如下:

import java.util.HashMap;

public class Attack {
    public static void main(String[] args) {
        HashMap<String, Integer> attacks = new HashMap<String, Integer>();
        attacks.put("Punch", 1);
        attacks.put("Uppercut", 3);
        attacks.put("Roundhouse Kick", 5);

        int actionPoints = // Code for random number generation

        System.out.println("A brigade integrant appeared!");
        System.out.println("What do you do?");
        System.out.println("1: Punch [1 AP], 2: Uppercut [3 AP], 3: Roundhouse Kick [5 AP]");
        System.out.println("You have " + actionPoints + " Action Points.");
        Scanner reader = new Scanner(System.in);
        System.out.println("Enter a number: ");
        int n = reader.nextInt();
        reader.close();

        if n == 1 {
            System.out.println("The brigade integrant takes 2 HP of damage!");
        }
        else if n == 2 {
            System.out.println("The brigade integrant takes 5 HP of damage!");
        }
        else if n == 3 {
            System.out.println("The brigade integrant takes 8 HP of damage!");
        }
    }
}

【问题讨论】:

标签: java random


【解决方案1】:

在 Java 1.7+ 中,您可以在 one line 中执行此操作(不包括导入语句;):

import java.util.concurrent.ThreadLocalRandom;

int actionPoints = ThreadLocalRandom.current().nextInt(5, 21); // 5 to 20 inclusive

【讨论】:

    【解决方案2】:

    试试这个:

    int lower = 12;
    int higher = 29;
    
    int random = (int)(Math.random() * (higher-lower)) + lower;
    

    【讨论】:

    • import math使用的代码吗?
    • 不,你不必导入数学类
    【解决方案3】:

    您可以通过多种方式生成随机数。其中两个是:

    Math.random(); // Random values ranging from 0 to 1
    
    Random rand; rand.nextInt(x); // Random int ranging from 0 to x
    

    要指定确切的范围,您可以执行以下操作:

    int RandomNumber = Min + (int)(Math.random() * Max); 
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-03-01
      • 2014-01-29
      • 2015-04-08
      • 1970-01-01
      • 2011-08-27
      • 2020-03-02
      • 2014-10-23
      相关资源
      最近更新 更多