下面是一个简单的C语言程序,模拟掷两个骰子共6000次,并统计每个可能的点数组合(从2到12)出现的次数:
```c
#include
#include
#include
#define DICE_FACES 6
#define ROLLS 6000
int main() {
// 初始化随机数种子
srand(time(NULL));
// 创建一个数组来存储每个点数(2-12)的出现次数
int counts[11] = {0}; // 从index 0到10对应点数2到12
// 开始模拟掷骰子
for (int i = 0; i < ROLLS; ++i) {
int dice1 = rand() % DICE_FACES + 1; // 掷第一个骰子
int dice2 = rand() % DICE_FACES + 1; // 掷第二个骰子
int sum = dice1 + dice2; // 计算两个骰子的点数和
// 更新相应点数和的出现次数
if (sum >= 2 && sum <= 12) {
counts[sum - 2]++; // 索引从0开始,所以要减去2
}
}
// 打印统计结果
printf("Dice Roll Statistics:\n");
for (int i = 0; i < 11; ++i) {
int sum = i + 2; // 还原到实际的点数和
printf("Sum of %d appeared %d times\n", sum, counts[i]);
}
return 0;
}
```
在这个程序中,我们首先包含了必要的头文件,并定义了常量来表示骰子的面数和模拟的掷骰子次数。然后,我们使用`srand(time(NULL))`来初始化随机数生成器的种子。
我们创建了一个大小为11的整数数组`counts`来存储每个点数(从2到12)的出现次数。数组的索引从0开始,所以我们使用`sum - 2`来作为数组的索引。
接下来,我们使用一个循环来模拟掷骰子的过程。在每次循环中,我们分别掷两个骰子,计算它们的点数和,并更新相应点数和的出现次数。
最后,我们打印出每个点数和的出现次数。注意,在打印时,我们需要将数组的索引加2来还原到实际的点数和。