下面是一个使用C语言编写的程序,用于模拟掷两个骰子共6000次,并统计每种点数的出现次数。
```c
#include
#include
#include
#define TOTAL_ROLLS 6000
#define DIE_FACES 6
int main() {
// 用于存储每个点数的出现次数的数组
int rolls[1 + 2 * DIE_FACES] = {0}; // 最小点数2,最大点数12
// 使用当前时间初始化随机数生成器
srand(time(NULL));
// 模拟掷骰子过程
for (int i = 0; i < TOTAL_ROLLS; ++i) {
// 掷第一个骰子
int die1 = rand() % DIE_FACES + 1;
// 掷第二个骰子
int die2 = rand() % DIE_FACES + 1;
// 计算两个骰子的点数和
int sum = die1 + die2;
// 累加对应点数的计数
rolls[sum]++;
}
// 打印统计结果
for (int i = 2; i <= 2 * DIE_FACES; ++i) {
printf("点数 %d 出现了 %d 次\n", i, rolls[i]);
}
return 0;
}
```
该程序首先定义了一个整数数组`rolls`来保存每种点数的出现次数,数组的大小为13(从点数2到点数12)。然后,它使用`srand(time(NULL))`来初始化随机数生成器。
接下来,程序使用一个循环来模拟掷两个骰子共6000次。在每次循环中,它分别掷两个骰子(使用`rand() % DIE_FACES + 1`),计算两个骰子的点数和,并更新`rolls`数组中对应点数的和的次数。
最后,程序遍历`rolls`数组并打印每种点数的出现次数。
请注意,由于该程序使用了`rand()`函数来生成随机数,因此每次运行程序时结果可能会有所不同。但是,如果程序运行足够多次,每种点数的出现次数应该接近其预期的概率(1/36)。