c语言掷骰子设计思路 (抛硬币掷色子)

抛一枚硬币出现正面在上或者是反面在上的概率均为1/2,这是通过推理得出的,因为硬币只有两面。估计现在也很少有人亲自去做实验验证出现某一面的概率为1/2。在学习完程序的基础知识后,就可以自己写代码去验证这个问题。下面就来聊聊如何使用编程语言来验证抛硬币出现某一面的概率。

示例代码如下:

#define _CRT_SECURE_NO_WARNINGS 1

#include <stdio.h>

#include<stdlib.h>

#include<time.h>

int main() {

srand(time(NULL));

int num;

for (int i = 0; i < 10; i++) {

num = rand() % 2;

printf("num=%d \n", num);

}

return 0;

}

先写一个for循环执行10次,其次使用随机数对2取余,结果只有0和1两种情况,测试结果如下,

c语言编程掷骰子求概率,抛硬币掷色子

我们可以使用0和1来分别代表硬币的正反面。

然后进行下一步的测试,示例代码如下:

#define _CRT_SECURE_NO_WARNINGS 1

#include <stdio.h>

#include<stdlib.h>

#include<time.h>

int main() {

srand(time(NULL));

int num, zheng = 0, fan = 0;

for (int i = 0; i < 1000; i++) {

num = rand() % 2;

if (num == 1) {

zheng++;

} else {

fan++;

}

}

printf("zheng=%d, fan=%d \n", zheng, fan);

return 0;

}

定义两个变量来统计正反面出现的次数,当随机数的结果为1时表示正面,否则就表示反面。测试1000次的结果如下,

c语言编程掷骰子求概率,抛硬币掷色子

测试1000000次结果如下,

c语言编程掷骰子求概率,抛硬币掷色子

从测试结果可以看出,测试次数越多,正面和反面出现的次数越接近1:1。上面就是抛硬币的代码实验,有兴趣的小伙伴可以自己写写看,然后查看测试结果。

验证色子实验与上面非常类似,示例代码如下,

#define _CRT_SECURE_NO_WARNINGS 1

#include <stdio.h>

#include<stdlib.h>

#include<time.h>

int main() {

srand(time(NULL));

int num, t1 = 0, t2 = 0, t3 = 0, t4 = 0, t5 = 0, t6 = 0;

for (int i = 0; i < 6666; i++) {

num = rand() % (6 - 1 + 1) + 1;

if (num == 1) {

t1++;

} else if(num == 2){

t2++;

} else if (num == 3) {

t3++;

} else if (num == 4) {

t4++;

} else if (num == 5) {

t5++;

} else {

t6++;

}

}

printf("t1=%d, t2=%d, t3=%d, t4=%d, t5=%d, t6=%d \n", t1, t2, t3, t4, t5, t6);

return 0;

}

生成的随机数范围为1到6,分表表示色子的六个面,然后重复生成随机数,统计每个数出现的次数。测试6666次结果如下,

c语言编程掷骰子求概率,抛硬币掷色子

测试66666666次结果如下,

c语言编程掷骰子求概率,抛硬币掷色子

测试次数越多,1到6每一个数出现的概率越接近1/6。上面就是抛硬币实验和投色子实验的模拟,有兴趣的小伙伴可以亲自动手试试。