gpt4 book ai didi

c - 程序未按预期返回结果。可能滥用 "bool"?

转载 作者:太空宇宙 更新时间:2023-11-04 02:54:50 26 4
gpt4 key购买 nike

我是编程新手,我必须编写一个可以模拟 10,000 场掷骰子游戏的程序。在我添加函数“diceRoll”之前,我得到它来计算房子和玩家的点数,玩家一次又一次地掷骰子,直到它匹配第一个掷骰或 7(房子赢)。现在它给出的结果绝对不是随机的(例如房子在 10,000 次中获胜 0 次)。我做错了什么?

#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#include <stdbool.h>

bool diceRoll (int a)
{
srand( (unsigned)time(NULL));
int n = 0;
int b = 0;
while(n < 1) {
b = rand() % 12;
if(b == a || b == 6) n++;
}
if(b == 6) return false;
else return true;
}


int main (void)
{
srand( (unsigned)time(NULL));
int a, n, house, player, point;
house = 0;
player = 0;
point = 0;

for(n = 0; n < 10000; n++) {
a = rand() % 12;
if(a == 1 || a == 2 || a == 11) {
house++;
}
else if(a == 6 || a == 10) {
player++;
}
else {
if(diceRoll(a) == true) player++;
else house++;
}
}

printf("The house has %i points.\n", house);
printf("The player has %i points.\n", player);
return 0;
}

最佳答案

你已经过度播种,删除 diceRoll 中对 srand() 的调用,你应该没问题(这会忽略 bias due to modulo usage )。

关于c - 程序未按预期返回结果。可能滥用 "bool"?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18904892/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com