我正在编写一个程序,它有 6 张不同的图片并显示 12 个图块,每张图片有两个。这是一个记忆游戏,我正在努力生成一个随机的瓷砖放置。我需要使用 RandomIntGenerator 将瓷砖分布在整个板上,但我想不出办法来做到这一点,因为 RandomIntGenerator 会重复数字。我不允许使用数组,这会使这变得容易得多。你能给我一些关于如何做到这一点的见解吗?
非常感谢任何帮助!-瑞安
创建List<Integer>
具有 12 个值的 (1-12)
List<Integer> list = new ArrayList<Integer>(12);
for(int i = 0; i < 12 ; i++){ list.add(i);}
然后洗牌
是的,看来你需要随机洗牌。例如,您可以实现您的简单Fisher-Yates改组版本,或者实际上,使用Collections.shuffle()
你可以试试这个:
int suggestedPlacement = RandomIntGenerator.next();
while (tileAlreadyTaken(suggestedPlacement)) {
suggestedPlacement = RandomIntGenerator.next();
}
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);
}