【发布时间】:2014-12-02 07:48:47
【问题描述】:
我是 Java 初学者。我正在尝试为我的扑克游戏 java 代码创建一个随机播放方法。它应该返回 52 张牌,洗牌。说明告诉我使用 math.random 删除一张卡片并将其返回到 ArrayList 的末尾,然后执行 500 次以将其洗牌。
我很困惑如何将其添加回来。这就是我到目前为止所拥有的一切......谢谢!
public void shuffle()
{
int x = (int)(52 * Math.random());
myDeck.remove(x);
}
顺便说一下,myDeck 是 ArrayList 名称。
ArrayList<Card> myDeck;
【问题讨论】:
-
“500 次”在哪里?在哪里尝试“在 ArrayList 末尾返回它?”
-
我用于(int i=0; i 类型的方法 add(int, Card) 不适用于参数 (int)"
-
@Oninez 见my answer。需要将
remove()的结果存储起来再添加。 -
从理论上讲,不清楚为什么要在 0 - 51 之间选择 500 次。为什么不为(int i=0;i
-
@Duncan,想想只运行 OP 方法 52 次。实际上很可能 (36%) 顶牌将保持不变。在不到 2% 的洗牌结束时,它应该是第一张牌。一次又一次地重复这个过程会逐渐减少偏差,但不能消除它。我认为您可能需要数百万次模拟才能看到显着的不同,但我真正的意思是要多做 9 倍的工作以获得稍差的分布。我估计偏差为 0.0001%(500 次洗牌,从不接触卡片 0),我认为这在几乎所有应用程序中都可以忽略不计。这是一个理论笔记...
标签: java