2009年10月30日 星期五

猜拳

 
笨笨的AI:
int main (/* daviddr 081226 */)
{
    int you, com, i,j=0, *k; t[9]={0},p[3]={0};
    char* h = "剪刀\0石頭\0布";
    char* r = "\n平手\0    \n電腦贏了\0\n妳贏了";      
    for (;;p[i]++, t[j*3+you]++, j = you) {
        cout <<"請輸入 (1=剪刀 2=石頭 3=布): ";
        cin  >> you; you--;
        if (you<0 || you>2) break;
        k   = t + j*3;
        com = *k>k[1] && *k>k[2]?1: k[1]<k[2]?0:2;
        cout <<"\nYou: "<< h +you*5;
        cout <<"\nCom: "<< h +com*5;
        i = (3+com-you) % 3;
        puts (r + 10*i);
    }
}

也可將藏鬮視為 non-cooperative 的 zero-sum game,
由於沒有純粹的 Nash equilibrium,故採混合策略以同等機率出
scissors, rock, 或 paper 總獲益較大。

技巧方面:雖然佳士得採用「先出剪刀」策略,
贏得了橋山高吉名畫拍賣會主持權,但那是「一次」且偏理性的賽局。
多次情況下,可嘗試假設以 7+-2 局作為人腦 Memory cache 數,
在此有限記憶下,自行構思 game matrix 進行動態策略機率估算。

沒有留言:

張貼留言