【问题标题】:Getting a range off user input for random generation获取用户输入的范围以进行随机生成
【发布时间】:2015-02-05 10:45:34
【问题描述】:

所以我试图让我的代码根据用户输入的内容生成随机数。而我目前的陈述没有产生正确的范围。

  secretNum = low + (int)(Math.random()* max);

其中低是范围的最低部分,而高是最高的。例如。如果低是 5,高是 10,这会产生 1-50 的范围吗? (5*10)。

【问题讨论】:

    标签: java random integer


    【解决方案1】:

    我会为此使用Random object

    你可以这样创建它:

    Random r = new Random(); 
    

    然后从那里开始,它非常易于使用。对于从 0(含)到 50(不含)的随机 int,只需执行以下操作:

    int randomNumber = r.nextInt(50);
    

    我认为这对您来说更容易。如果用户输入 10 和 140,那么你可以这样做:

    int lowest = 10;
    int highest = 140;
    int randomMax = 140-10;
    int randomNumber = r.nextInt(randomMax) + 10;
    

    这可能是最简单的方法。

    【讨论】:

      【解决方案2】:

      您将用户输入保存在变量in

      String in = sc.nextLine();
      

      然后创建java.util.Random 的实例,种子是输入的哈希:

      Random r = new Random(in.hashCode());
      
      int randomNumber = r.nextInt();
      

      如果你想生成一个介于最大值和最小值之间的随机数,请参阅this Question 或者this one但是你需要将c++转换成java:

      C++:

      output = min + (rand() % (int)(max - min + 1))
      

      Java:

      output = min + (r.nextInt() % (max - min + 1))
      

      如果你只需要一个最大值,你也可以使用r.nextInt(max)

      注意: 对于加密安全的随机数,请使用 SecureRandom 的实例

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2010-12-24
        • 2019-04-08
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-08-27
        • 1970-01-01
        相关资源
        最近更新 更多