如何用'*'创建垂直结果图?附10000次骰子模拟C语言实现
单骰子10000次随机投掷模拟实现
需求说明
- 模拟六面骰子投掷10000次
- 统计每个面(1-6)的出现次数并输出
- 使用
*符号绘制各面出现次数的水平柱状图,结果需接近均匀分布 - 仅允许使用
stdio.h、stdlib.h、time.h三个头文件
实现代码
/* 骰子投掷模拟程序 */ /* 程序用到的头文件 */ #include<stdio.h> #include<stdlib.h> #include<time.h> /* 主函数:模拟六面骰子投掷10000次 */ int main() { /* 统计每个骰子面(1-6)的出现次数 */ int count1 = 0; int count2 = 0; int count3 = 0; int count4 = 0; int count5 = 0; int count6 = 0; int roll; /* 投掷次数计数器,从1到10000 */ int face; /* 单次投掷的骰子面数值,范围1-6 */ srand(time(NULL)); /* 设置随机数种子,保证每次运行结果不同 */ // 循环执行10000次投掷 for (roll = 1; roll <= 10000; roll++) { face = 1 + rand() % 6; /* 生成1-6的随机数,模拟骰子面 */ // 根据骰子面数值更新对应计数器 switch (face) { case 1: ++count1; break; case 2: ++count2; break; case 3: ++count3; break; case 4: ++count4; break; case 5: ++count5; break; case 6: ++count6; break; } } // 输出统计结果表头 printf("%s%10s\n", "骰子面", "出现次数"); // 输出每个骰子面的出现次数 printf(" 1%10d\n", count1); printf(" 2%10d\n", count2); printf(" 3%10d\n", count3); printf(" 4%10d\n", count4); printf(" 5%10d\n", count5); printf(" 6%10d\n\n", count6); /* 临时变量存储各面出现次数(用于绘制柱状图) */ int val1 = count1; int val2 = count2; int val3 = count3; int val4 = count4; int val5 = count5; int val6 = count6; /* 柱状图绘制计数器 */ int line1 = 0; int line2 = 0; int line3 = 0; int line4 = 0; int line5 = 0; int line6 = 0; // 绘制骰子面1的柱状图 printf("1 "); while (line1 < val1) { printf("* "); line1 += 150; /* 调整每个*代表的次数,避免柱状图过长 */ } printf("\n"); // 绘制骰子面2的柱状图 printf("2 "); while (line2 < val2) { printf("* "); line2 += 150; } printf("\n"); // 绘制骰子面3的柱状图 printf("3 "); while (line3 < val3) { printf("* "); line3 += 150; } printf("\n"); // 绘制骰子面4的柱状图 printf("4 "); while (line4 < val4) { printf("* "); line4 += 150; } printf("\n"); // 绘制骰子面5的柱状图 printf("5 "); while (line5 < val5) { printf("* "); line5 += 150; } printf("\n"); // 绘制骰子面6的柱状图 printf("6 "); while (line6 < val6) { printf("* "); line6 += 150; } return 0; /* 程序正常结束 */ } /* 主函数结束 */
代码说明
- 使用
srand(time(NULL))初始化随机数生成器,确保每次运行的随机序列不同 - 通过循环执行10000次投掷,用
rand()%6+1生成1-6的随机数模拟骰子面 - 用switch语句统计每个面的出现次数
- 柱状图中每个
*代表约150次出现,避免输出过长影响可读性
内容的提问来源于stack exchange,提问作者Zafer Kazankaya
相关产品推荐
相关产品推荐

