在生成数字对的随机列表时,如何避免重复?

Mav*_*vix 1 java arrays random

我有以下代码在boolean [] []中将10个随机值设置为true:

    bommaker = new boolean[10][10];
    int a = 0;
    int b = 0;

    for (int i=0; i<=9; i++) {          

        a = randomizer.nextInt(9);
        b = randomizer.nextInt(9);
        bommaker[a][b] = true; 
    }
Run Code Online (Sandbox Code Playgroud)

但是,使用此代码,可以生成相同的值,因此将少于10个值设置为随机.如果尚未获取值,我需要构建一个检查器.如果它已经被采用,那么它需要重做随机化.但我不知道该怎么做.有人能帮我吗?

sve*_*rre 6

最简单的解决方案,而不是最好的:

for (int i=0; i<=9; i++) {          
    do {
        a = randomizer.nextInt(10);
        b = randomizer.nextInt(10);
    } while (bommaker[a][b]);

    bommaker[a][b] = true; 
}
Run Code Online (Sandbox Code Playgroud)

  • 我会通过将其更改为:while(bommaker [a] [b]); 因为你只想设置炸弹,只有它已经存在.但除此之外,还有很好的答案. (2认同)