DAY 35
0

## 31 柏拉圖問題 競爭模型對拿取總價值的影響 I（我又回來了～～

<?php

if (isset(\$argv))
for (\$i=1;\$i<count(\$argv);\$i++)
{
\$it = explode("=",\$argv[\$i]);
\$_GET[\$it[0]] = \$it[1];
}

\$n="\n";
\$brn="<br />\n";

date_default_timezone_set("Asia/Taipei");

//設定變數

//mode=0 無變數
//mode=1 凋謝速率
//mode=2 員工貢獻度
//mode=3 競爭
//mode=4 參考 v(朋友)

if(isset(\$_GET['debug'])) \$debug=\$_GET['debug'];
else \$debug=1;//顯示步驟

if(isset(\$_GET['from'])) \$from=\$_GET['from'];
else \$from=0;

if(isset(\$_GET['to'])) \$to=\$_GET['to'];
else \$to=100;

if(isset(\$_GET['choice_time'])) \$choice_time=\$_GET['choice_time'];
else \$choice_time=1;

if(isset(\$_GET['limit'])) \$limit=\$_GET['limit'];
else \$limit=100;

if(isset(\$_GET['gap'])) \$gap=\$_GET['gap'];
else \$gap=0.1;

if(isset(\$_GET['loop_num'])) \$loop_num=\$_GET['loop_num'];
else \$loop_num=50;

printf("date,percent,=>,best,fail,fine \$n");

for(\$k=\$from;\$k<=\$to;\$k=\$k+\$gap){

\$percent=\$k;

\$best=0;
\$fail=0;
\$fine=0;

if(\$debug>1){
echo "From: ", \$from, \$n;
echo "To: ", \$to, \$n;
echo "Limit: ", \$limit, \$n;
echo "Percent: ", \$percent, \$n;
echo "Border: ", \$limit*\$percent/100, \$n;
}

for(\$j=0;\$j<\$loop_num;\$j++){

\$max_num=0;
\$max_percent=\$limit*\$percent/100;
\$percent_num=0;
\$friend_percent_num=0;
\$choice=0;
\$time=\$choice_time;
\$thisnum=range(1,\$limit,1);//（小,大,差）
shuffle(\$thisnum);//洗牌

for(\$i=0;\$i<\$limit;\$i++){
//\$num=rand(\$from, \$to);

\$num=\$thisnum[\$i];
\$friend_num=\$thisnum[\$limit-\$i-1];
if(\$max_num<=\$num) \$max_num=\$num;
if(\$max_num<=\$friend_num)\$max_num=\$friend_num;

if(\$i<\$max_percent) {
if(\$percent_num<\$num) \$percent_num=\$num;
//echo "P:", \$percent_num, \$n;
}
if(\$friend_percent_num<\$friend_num) \$friend_percent_num=\$friend_num;

if(\$debug>0) echo \$i+1, " ", \$num, " ", \$friend_num, " ", \$percent_num, " ", \$friend_percent_num, \$n;
if(\$time>0 and \$num>\$percent_num and \$num>=\$friend_percent_num) {
\$choice=\$num;
\$time=\$time-1;
}
}

if(\$debug>0){
echo "Choice: ", \$choice, \$n;
echo "Max: ", \$max_num, \$n;
}

if(\$max_num==\$choice) \$best++;
if(\$choice==0) \$fail++;
if(\$max_num>\$choice and \$choice>0) \$fine++;

}

\$thedate=date("m-d H:i");
printf("%s,%.1f => %.7f %.7f %.7f (%.0f/%.0f)\n", \$thedate, \$percent, \$best/\$loop_num, \$fail/\$loop_num, \$fine/\$loop_num, log(\$loop_num, 10), log(\$limit, 10));

}

?>

date,percent,=>,best,fail,fine
01-18 23:16,0.0 => 0.1522000 0.0000000 0.8478000 (4/2)
01-18 23:16,1.0 => 0.2913000 0.0089000 0.6998000 (4/2)
01-18 23:16,2.0 => 0.3605000 0.0197000 0.6198000 (4/2)
01-18 23:16,3.0 => 0.4239000 0.0285000 0.5476000 (4/2)
01-18 23:16,4.0 => 0.4663000 0.0402000 0.4935000 (4/2)
01-18 23:16,5.0 => 0.4903000 0.0507000 0.4590000 (4/2)
01-18 23:16,6.0 => 0.5175000 0.0598000 0.4227000 (4/2)
01-18 23:16,7.0 => 0.5476000 0.0683000 0.3841000 (4/2)
01-18 23:16,8.0 => 0.5737000 0.0811000 0.3452000 (4/2)
01-18 23:16,9.0 => 0.5850000 0.0904000 0.3246000 (4/2)
01-18 23:16,10.0 => 0.6037000 0.1026000 0.2937000 (4/2)
01-18 23:16,11.0 => 0.6156000 0.1075000 0.2769000 (4/2)
01-18 23:16,12.0 => 0.6246000 0.1210000 0.2544000 (4/2)
01-18 23:16,13.0 => 0.6329000 0.1337000 0.2334000 (4/2)
01-18 23:16,14.0 => 0.6514000 0.1371000 0.2115000 (4/2)
01-18 23:16,15.0 => 0.6566000 0.1502000 0.1932000 (4/2)
01-18 23:16,16.0 => 0.6580000 0.1602000 0.1818000 (4/2)
01-18 23:16,17.0 => 0.6574000 0.1659000 0.1767000 (4/2)
01-18 23:16,18.0 => 0.6597000 0.1828000 0.1575000 (4/2)
01-18 23:16,19.0 => 0.6792000 0.1831000 0.1377000 (4/2)
01-18 23:16,20.0 => 0.6656000 0.2082000 0.1262000 (4/2)
01-18 23:16,21.0 => 0.6664000 0.2110000 0.1226000 (4/2)
01-18 23:16,22.0 => 0.6620000 0.2283000 0.1097000 (4/2)
01-18 23:16,23.0 => 0.6737000 0.2285000 0.0978000 (4/2)
01-18 23:16,24.0 => 0.6689000 0.2407000 0.0904000 (4/2)
01-18 23:16,25.0 => 0.6648000 0.2555000 0.0797000 (4/2)
01-18 23:16,26.0 => 0.6602000 0.2635000 0.0763000 (4/2)
01-18 23:16,27.0 => 0.6616000 0.2715000 0.0669000 (4/2)
01-18 23:16,28.0 => 0.6625000 0.2793000 0.0582000 (4/2)
01-18 23:16,29.0 => 0.6529000 0.2900000 0.0571000 (4/2)
...