【问题标题】:How can I generate a random number in a certain range?如何生成一定范围内的随机数?
【发布时间】:2014-01-29 17:55:18
【问题描述】:

如何使用 Eclipse 创建一个在 Android 中生成随机数的应用,然后在 TextView 字段中显示结果?随机数必须在用户选择的范围内。所以,用户将输入范围的最大值和最小值,然后我将输出答案。

【问题讨论】:

    标签: android random numbers range generator


    【解决方案1】:
    /**
    * min and max are to be understood inclusively
    */
    public static int getRandomNumber(int min, int max) {
        return (new Random()).nextInt((max - min) + 1) + min;
    }
    

    【讨论】:

      【解决方案2】:

      延伸拉胡尔·古普塔所说的话:

      您可以使用Java函数int random = Random.nextInt(n)
      这将返回[0, n-1] 范围内的随机int

      即,要获得[20, 80] 的范围,请使用:

      final int random = new Random().nextInt(61) + 20; // [0, 60] + 20 => [20, 80]
      

      概括更多:

      final int min = 20;
      final int max = 80;
      final int random = new Random().nextInt((max - min) + 1) + min;
      

      【讨论】:

      【解决方案3】:

      以下代码将帮助您在给定范围内的两个数字之间生成随机数:

      private void generateRandomNumbers(int min, int max) {
          // min & max will be changed as per your requirement. In my case, I've taken min = 2 & max = 32
      
          int randomNumberCount = 10;
      
          int dif = max - min;
          if (dif < (randomNumberCount * 3)) {
              dif = (randomNumberCount * 3);
          }
      
          int margin = (int) Math.ceil((float) dif / randomNumberCount);
          List<Integer> randomNumberList = new ArrayList<>();
      
          Random random = new Random();
      
          for (int i = 0; i < randomNumberCount; i++) {
              int range = (margin * i) + min; // 2, 5, 8
      
              int randomNum = random.nextInt(margin);
              if (randomNum == 0) {
                  randomNum = 1;
              }
      
              int number = (randomNum + range);
              randomNumberList.add(number);
          }
          Collections.sort(randomNumberList);
          Log.i("generateRandomNumbers", "RandomNumberList: " + randomNumberList);
      }
      

      【讨论】:

        【解决方案4】:

        此外,从 API 级别 21 开始,这是可能的:

        int random = ThreadLocalRandom.current().nextInt(min, max);
        

        【讨论】:

        • 这里过于频繁地返回相同的数字。糟糕的体验!
        • 同意@1111161171159459134
        • 是的,确实,我也不再使用它了。随机类更好
        【解决方案5】:

        Android 中的随机数生成器 如果您想了解 android 中的随机数生成器,那么您应该阅读这篇文章直到最后。在这里,您可以获取有关 android 中的随机数生成器的所有信息。 Random Number Generator in Android

        您应该在您的 java 文件中使用此代码。

        Random r = new Random();
                            int randomNumber = r.nextInt(100);
                            tv.setText(String.valueOf(randomNumber));
        

        我希望这个答案可能对您有所帮助。如果你想阅读更多关于这篇文章的内容,那么你应该阅读这篇文章。 Random Number Generator

        【讨论】:

        • (点评来源:您发布的第二个链接完全损坏。请编辑您的答案并修复或删除它。谢谢。)
        【解决方案6】:

        您可以使用 If Random。例如,这会生成一个介于 75 到 100 之间的随机数。

        final int random = new Random().nextInt(26) + 75;
        

        【讨论】:

          【解决方案7】:
          Random r = new Random();
          int i1 = r.nextInt(45 - 28) + 28;
          

          这给出了一个介于 28(含)和 45(不含)之间的随机整数,是 28,29,...,43,44 之一。

          【讨论】:

          【解决方案8】:

          所以你会想要以下:

          int random;
          int max;
          int min;
          

          ...在您的代码中的某处放置方法以在用户单击提交时从用户那里获取最小值和最大值,然后在以下代码行中使用它们:

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

          这会将 random 设置为用户选择的最小值和最大值之间的随机数。 然后你会做:

          TextView.setText(random.toString());
          

          【讨论】:

            【解决方案9】:

            " 用户是选择 max no 和 min no 的那个人?" 这条线是什么意思?

            你可以使用java函数int random = Random.nextInt(n)。这将返回范围 [0, n-1]) 中的随机 int。

            您可以使用setText() 方法在您的文本视图中设置它

            【讨论】:

            • 错误:无法从 Random 类型对非静态方法 nextInt(int) 进行静态引用
            • int random = Random.nextInt(5);
            • 您的错误不是因为我的代码。显示您编写此代码的类。此错误通常出现在静态方法中
            • 它不是静态方法,我在 asyn task() 中使用
            • 发布您遇到此问题的代码以及行号
            猜你喜欢
            • 1970-01-01
            • 2016-05-04
            • 2011-08-26
            • 2017-11-06
            • 2010-12-24
            • 1970-01-01
            • 2011-07-01
            相关资源
            最近更新 更多