轉載: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);
}