
【開催】囚人のジレンマ大会(361)
- 1 デフォルトの名無しさん 02/04/17 17:48
- 「囚人のジレンマ」大会をやろうではありませんか。
C言語で「囚人」は関数として作ってください。
1000回取引をし、その合計点数が高い囚人が勝ちとなります。
点数表は以下の通りです。
協調同士 3点
裏切り同士 1 点
協調裏切り 5/0点。
最低得点は1000点。最高得点は5000点になります。
関数は戻り値で 0:協調 か 1:裏切り を返します。
以前の取引は result 配列で参照できます。
メイン関数と囚人関数の例を示します。
#include <stdio.h>
int round;
char result_a[1000], result_b[1000];
int prisoner_a(void) /* 最強しっぺ返し君 */
{
if ( round == 1 ) return 0;
if ( result_b[ round - 1 ] == 0 ) return 1; else return 0;
}
int prisoner_b(void) /* 人間不信裏切り君 */
{
return 1;
}
int main(int argc, char *argv[])
{
int a=0,b=0,pa=0,pb=0;
for ( round = 1; round <= 1000; round ++ ) {
a = prisoner_a();
b = prisoner_b();
if ( ( a == 0 ) && ( b ==0 ) ) { pa+=3;pb+=3; } /* 協調:協調 */
if ( ( a == 1 ) && ( b ==0 ) ) { pa+=5;pb+=0; } /* 裏切り:協調 */
if ( ( a == 0 ) && ( b ==1 ) ) { pa+=0;pb+=5; } /* 協調:裏切り */
if ( ( a == 1 ) && ( b ==1 ) ) { pa+=1;pb+=1; } /* 裏切り:裏切り */
result_a[round] = a;
result_b[round] = b;
printf( "Round %d A:%d / B:%d\n",round,a,b);
}
printf("A:%d / B:%d\n\n",pa,pb);
}
総レス数 361
■ このスレッドは過去ログ倉庫に格納されています
IE等普通のブラウザで見る場合 http://tubo.80.kg/tubo_and_maru.html
専用のブラウザで見る場合 http://www.monazilla.org/
2ちゃんねる Viewerを使うと、すぐに読めます。 http://2ch.tora3.net/
この Viewer(通称●) の売上で、2ちゃんねるは設備を増強しています。
●が売れたら、新しいサーバを投入できるという事です。
よくわからない場合はソフトウェア板へGo http://hibari.2ch.net/software/
モリタポを持っていれば、50モリタポで表示できます。
read.cgi@hanako ver 2011/01/22
FOX ★ DSO(Dynamic Shared Object)