随机生成整数而不重复,没有数组

时间:2013-10-28 21:57:24

标签: java memory random

我正在编写一个包含6张不同图片并显示12张图片的程序,每张照片有两张。这是一款记忆游戏,我正致力于生成一个随机的磁贴放置。我需要使用RandomIntGenerator来分配整个电路板,但我想不出办法,因为RandomIntGenerator会复制数字。我不允许使用数组,这会让这更容易。你能否告诉我如何做到这一点?

非常感谢任何帮助! -Ryan

4 个答案:

答案 0 :(得分:7)

创建一个包含12个值(1-12)的List<Integer>

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

然后将其洗牌

Collections.suffle(list)

答案 1 :(得分:2)

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

答案 2 :(得分:0)

你可以试试这个:

int suggestedPlacement = RandomIntGenerator.next();

while (tileAlreadyTaken(suggestedPlacement)) {
  suggestedPlacement = RandomIntGenerator.next();
}

答案 3 :(得分: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);
}