2

我正在编写一个程序,它有 6 张不同的图片并显示 12 个图块,每张图片有两个。这是一个记忆游戏,我正在努力生成一个随机的瓷砖放置。我需要使用 RandomIntGenerator 将瓷砖分布在整个板上,但我想不出办法来做到这一点,因为 RandomIntGenerator 会重复数字。我不允许使用数组,这会使这变得容易得多。你能给我一些关于如何做到这一点的见解吗?

非常感谢任何帮助!-瑞安

4

4 回答 4

7

创建List<Integer>具有 12 个值的 (1-12)

List<Integer> list = new ArrayList<Integer>(12);
for(int i = 0; i < 12 ; i++){ list.add(i);}

然后洗牌

Collections.suffle(list)

于 2013-10-28T22:02:00.610 回答
2

是的,看来你需要随机洗牌。例如,您可以实现您的简单Fisher-Yates改组版本,或者实际上,使用Collections.shuffle()

于 2013-10-28T22:06:06.090 回答
0

你可以试试这个:

int suggestedPlacement = RandomIntGenerator.next();

while (tileAlreadyTaken(suggestedPlacement)) {
  suggestedPlacement = RandomIntGenerator.next();
}
于 2013-10-28T21:59:57.797 回答
0
long pattern = 0b111111;
Random r = new Random();
while (pattern != 0) {
    int n = r.nextInt(6);
    long mask = 1 << n;
    if ((pattern & mask) == 0) continue;
    pattern ^= mask;
    System.out.println("n = " + n);
}
于 2013-10-28T22:53:02.650 回答