嘿伙计们看看这个程序。
/* The craps game, KN king page 218 */
#include <stdio.h>
#include <time.h>
#include <stdbool.h>
#include <stdlib.h>
int roll_dice(void);
bool play_game(void);
int roll_dice(void)
{
int roll;
getchar();
srand((unsigned) time(NULL));
roll = rand() % 13;
if(roll == 0)
roll = roll + 1;
return roll;
}
bool play_game()
{
int sum = 0, wins = 0, loss = 0, point;
sum = roll_dice();
printf("You rolled: %d", sum);
if(sum == 7 || sum == 11)
{
printf("\nYou won!\n");
return true;
}
if(sum == 2 || sum == 3 || sum == 12)
{
printf("\nYou lost!!");
return false;
}
point = sum;
printf("\n\nYour point is: %d", point);
do
{
sum = roll_dice();
printf("\nYou rolled: %d", sum);
}while(sum != point);
if(sum == point)
{
printf("\nYou won!!!");
return true;
}
}
int main()
{
char c, wins = 0, losses = 0;
bool check;
do
{
check = play_game();
if(check == true)
wins++;
else if(check == false)
losses++;
printf("\nPlay Again? ");
scanf("%c", &c);
}while(c == 'Y' || c == 'y');
printf("\nWins: %d Losses: %d", wins, losses);
return 0;
}
srand 函数不断返回相同的值 3 或 4 次,y 是那个?
我每次掷骰子时都想要不同的值,复制代码并运行它来看看我的意思
srand() 是一个为 rand() 函数设置种子的函数。您在这里所做的是将种子设置为每次调用 rand() 之前的当前时间,如果调用得足够快,将为您提供相同的值(因为它将重置为相同的种子,如果足够快的话将是相同的时间值)。
您要做的就是在程序启动时(在 main() 函数开始时)调用 srand() 一次
然后每次你想要一个随机数时调用 rand() ,就像你现在正在做的那样,但不需要每次都调用 srand() 。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)