如何为所有按钮设置不同的随机数?

时间:2016-11-19 13:48:53

标签: java android button random

我在阵列中有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之外,任何人都知道如何在该范围之间做出所有其他可能的数字吗?

3 个答案:

答案 0 :(得分:2)

如果我是你..

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,我将它添加到'Set',因为set始终保持唯一性,如果我再次得到100,Set的大小将不会增加。

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

遍历Set设置文字。

答案 1 :(得分:0)

在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的按钮数组。

答案 2 :(得分:-1)

试试这个:

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