【发布时间】:2013-10-11 07:15:37
【问题描述】:
我正在创建一个二十一点程序,并尝试在程序开始时向玩家随机发牌。这是我用 Java 编写的最初向玩家发牌的函数。
public static int[][] initDeal(int NPlayers)
{
int hands[][] = new int[NPlayers][2];
for(int a = 0; a<NPlayers; a++)
{
hands[a][0] = (int)Math.round((Math.random() * 13))-1;
hands[a][1] = (int)Math.round((Math.random() * 13))-1;
}
return hands;
}
我认为 Random 方法和 for 循环存在问题,因为虽然每个玩家的两张牌是随机生成的,但所有玩家都得到了相同的牌。
【问题讨论】:
-
你有什么问题?
-
如果我是你,我会将你的多维数组换成
Hand对象的列表或数组或其他东西。会让一切变得更干净。 -
你为什么不用
java.util.Random.nextInt(13)? -
@Masud 它会生成两个随机数,但对于 for 循环的每个实例都是相同的两个。如果 NPlayers 为 2,则 hands[0][0] 和 hands[1][0] 相同,而 hands[0][1] 和 hands[1][1] 相同。这意味着所有玩家都得到相同的牌。
-
您的代码在 ideone 上运行良好。 Here is the link.
标签: java loops for-loop random blackjack