【问题标题】:How to set a different random number to all buttons?如何为所有按钮设置不同的随机数?
【发布时间】:2017-04-03 06:46:27
【问题描述】:

我在一个数组中有 4 个按钮。我能够生成一个随机数并将其设置为所有这些按钮,但这不是我打算做的。我真正想做的是为每个按钮设置一个随机数。例如:不是在所有四个按钮中都有“17”,而是在每个按钮中都有“18”、“15”、“10”和“11”。与其手动为每个按钮分配一个随机输入,我怎样才能对所有按钮执行此操作?

这是我的代码:

Random rbselection = new Random();
final int rbselector = rbselection.nextInt(4);
final Button[] selectrb = new Button[4];
selectrb[0] = rb1;
selectrb[1] = rb2;
selectrb[2] = rb3;
selectrb[3] = rb4;
Random randoms1 = new Random();
int setRandoms1 = randoms1.nextInt(10);
for(int allrbA=0; allrbA<4; allrbA++) {
    selectrb[allrbA].setText(""+setRandoms1);
}

另外,有谁知道如何阻止单个数字在执行此操作时被输出两次?例如,如果随机数集介于 10 和 20 之间,其中一个是 12,那么任何人都知道如何使所有其他可能的数字在除 12 之外的范围之间吗?

【问题讨论】:

    标签: java android button random


    【解决方案1】:

    如果我是你..

    public static void main(String[] args) {
        Set<Integer> uniqueRandomNumbers = new LinkedHashSet<>();
    
        while (uniqueRandomNumbers.size() != 4) {
            Random random = new Random();
            uniqueRandomNumbers
                    .add(Math.abs(Integer.valueOf(random.nextInt())));
        }
        System.out.println(uniqueRandomNumbers);
    }
    

    说明: 我正在生成随机数。首先我得到随机数 100,我将它添加到一个“集合”中,因为集合始终保持唯一性,如果我再次得到 100,Set 的大小不会增加。

    Set 的大小为 4 时,循环中断并且集合包含唯一的随机数。

    遍历Set 来设置文本。

    【讨论】:

      【解决方案2】:

      在 Java 中获取随机数:

      Random rand = new Random();
      
      int  n = rand.nextInt(50) + 1;
      

      其中 1 将是您在该范围内的最小值,而 50 将是您的最大值。使用此链接作为参考:Getting random numbers in Java

      取决于您有多少个按钮。你可以有

      rbselection.nextInt(50) + 1;
      

      每次调用时生成一个介于 1 到 50 范围内的新 Int 并将其添加到某个列表或 Set 中。

      所以是这样的:

      Random rand = new Random();
      int  n = rand.nextInt(50) + 1;
      
      ArrayList<Integer> ar = new ArrayList<Integer>();
      int i = 0;
      
      while (i < 4)
      {    
          int temp = rbselection.nextInt(50) + 1;
          if (ar.contains(temp))
              continue;
      
          ar.Add(temp);
          i++;
      }
      

      另外,您可以将上面的代码更改为:

      while (i < 4)
      {
          int temp = rbselection.nextInt(50) + 1;
          if (ar.contains(temp))
              continue;
      
          array[i].setText(temp);
          ar.Add(temp);
          i++;
      }
      

      其中array是大小为4的按钮数组。

      【讨论】:

        【解决方案3】:

        试试这个:

        Random rnd = new Random();
        for(int allrbA=0; allrbA<4; allrbA++)
            selectrb[allrbA].setText(String.valueOf(rnd.nextInt(20)));
        

        【讨论】:

        • 这如何保证每个按钮上的随机数不同?
        猜你喜欢
        • 1970-01-01
        • 2014-03-11
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-09-14
        • 2014-08-08
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多