转载:http://0or1.top/index.php/archives/286/
囚徒困境介绍:囚徒困境是一个经典博弈论。
囚徒困境与博弈论还有一点不同,囚徒双方不管作何选择,同时第三方或者非囚徒一方肯定是受益方。
比如小孩从小家长就怕输在“起跑线上”,报各种补习班,中学,高中,大学,学校分数线不断刷新,最终受益方是学校和培训机构。作为学生无可奈何,无法逃出困境;同时也有两个囚徒问题,具体可以点击囚徒困境说明
这个囚徒理论之前有听说,最近两次见到过他,于是今天就用c语言代码实现两个囚徒做出的选择和个体受益,及整体受益比例:
//https://blog.csdn.net/bjweimengshu/article/details/99790350 囚徒理论说明
#include <stdio.h>
int methoed(int say);
int scoresum(int s1,int s2);
int qingkuang(int saya,int sayb);
int main(void){
int saya;int sayb;
printf("分别输入囚徒A要说的和B要说的\n1代表yes,0代表no\n");
while(1){
scanf("%d %d",&saya,&sayb);
qingkuang(saya,sayb);
}
}
qingkuang(int i,int j){
int say=-1;
if(i==0&&j==0)
say=1;
if(i==1&&j==1)
say=2;
if(i==1&&j==0)
say=3;
if(i==0&&j==1)
say=4;
return methoed(say);
}
int methoed(say){
int score1=0;
int score2=0;
switch(say){
case 1:
score1-=1;
score2-=1;
scoresum(score1,score2);
break;
case 2:
score1-=5;
score2-=5;
scoresum(score1,score2);
break;
case 3:
score1+=0;
score2-=10;
scoresum(score1,score2);
break;
case 4:
score1-=10;
score2+=0;
scoresum(score1,score2);
break;
default:printf("输入有错");
}
}
int scoresum(int s1,int s2){
int sum=0;
sum=s1+s2;
printf("囚犯A分数%d,囚犯B分数%d,两人总分数%d\n",s1,s2,sum);
}