Java - 基于早期值限制随机结果

时间:2017-10-16 17:45:39

标签: java random

我正在开发类似Gambler的游戏来练习套接字编程,我遇到了一个小问题。 我有一个游戏,玩家轮流获得一个随机数。这些数字加在一起以获得玩家得分。我试图这样做,如果你举一个7 - 你不能再得到它。 到目前为止我一直在努力: 编辑:

private void pick() {

    Number r = new Number(getNumber(), new Vector2(200, 10));
    myNumbers.add(r);
    sendMessage(output, "Number" + r.value);
}

private int getNumber() {
    int n = random.nextInt(10);
    while(numberHasBeenPicked(n)) {
        n = random.nextInt(10);
    }

    return n;

}

private boolean numberHasBeenPicked(int value) {
    if(numbersUsed.contains(value))
            return true;
        else
            return false;
}

此外,sendMessage()函数会将数字添加到服务器和客户端列表中的numbersUsed,以便两个程序都知道已经执行了哪些

/编辑

但我没有得到我正在寻找的结果。我不知道还有什么可说的,因为我得到的错误基本上是我仍然得到已被使用的数字,即使我确定它们已被放入numbersUsed列表。

任何帮助都会受到赞赏,如果没有信息,我很抱歉。

2 个答案:

答案 0 :(得分:0)

while(!numberHasBeenPicked(n))

你应该删除!,因为当条件为真时,所以选择了数字,你想要选择另一个。并且通过!你声明:当错误的数字被挑选时(所以它没有),选择另一个。好像你想要实现相反的目标

答案 1 :(得分:0)

@SotiriosDelimanolis提到改变程序的设计会更好。您可以将所有生成的值放入ArrayList,并在生成新的随机数时检查此ArrayList是否包含新数字。您可以使用containsAll()

执行此操作