【发布时间】:2012-03-05 13:21:32
【问题描述】:
我正在自学基本的 C 语言并尝试创建一个扑克客户端。我有一个带有卡片的数组(称为kortArray)和一个玩家手(称为kortHand)。我的实现不是洗牌,而是依次添加所有 52 张牌,然后从牌组中随机选择 5 张牌。我添加了一个标志(称为draget),它表明一张卡片是否已经被捡起。
现在,当我运行下面的算法时,它通常会生成五个随机数,这使得玩家或计算机的手。但有时它会生成少于五个数字,即使我已经明确指出生成五个可接受的值。
我有两个循环,一个运行五次,另一个嵌套并运行,直到找到一张尚未被选中的卡片。中间的printf 告诉我,这个算法并不总是生成五个可接受的数字,当这种情况发生时,玩家的手牌中会包含无意义的牌。
srand((unsigned)(time(0)));
for(i = 0; i < 5; i++) {
int x = rand()%52 + 1;
while (kortArray[x].draget!=1) {
x = rand()%52 + 1;
if (kortArray[x].draget != 1) {
printf("%i\n", x);
kortArray[x].draget = 1;
kortHand[i] = kortArray[x];
}
}
}
【问题讨论】:
-
您的代码没有正确缩进。
-
@ManojR:Codereview 与 SO 一样不能用于调试
-
当问题中的代码是真实代码时,请告诉我们。