03.19 为何戒赌,程序员用计算机模拟色子猜大小,发现民间策略不管用

俗话说,十赌九输。但有些人就是不信,以为自己有点小窍门,有点小门道,不会输钱。实则不知,当你踏进赌场的门时,已经输了。这里就运用计算机模拟技术,来验证下那些民间策略为何不管用。好劝深陷其中的人及早抽身上岸。

为何戒赌,程序员用计算机模拟色子猜大小,发现民间策略不管用

澳门娱乐场押大小

先讲游戏规则:这是在澳门娱乐场常见的一种游戏规则,一共三个色子,放到倒扣的碗中摇动,然后翻开碗,看朝上的点数。其每个点数加一起大于10,那么就是大,反之为小。只要押中就为赢。但要是出现111,222,333,444,555,666这种(豹子),那么直接输。

为何戒赌,程序员用计算机模拟色子猜大小,发现民间策略不管用

永利、葡京娱乐场


民间压注策略一:前面10次中,已经7次以及7次以上出现大或者小,那么接下来一把压其对立面。按照“概率”来说,前面出了那么多的大(小),那么接下来肯定出小(大)的概率要大点,毕竟总体概率要平衡到50%。

民间压注策略二:撑死胆大的,饿死胆小的,前面已经连续出现多次大(小)的时候,我再跟进买大(小)。相信有玄学存在,出大小会有连续性,下一次肯定还是大(小)。

那接下来我们写程序模拟,用民间策略一押注方式,看看到底能不能够赚钱。

我们以本金10000,每次都200来算,一共进行500轮。

策略一500次模拟结果:

为何戒赌,程序员用计算机模拟色子猜大小,发现民间策略不管用

策略一看来不行,有两次都输光光了

那接下来我们用民间策略二押注方式,看看到底能不能够赚钱。(本金也是10000,每次都200来算,一共进行500轮。)

策略二500次模拟结果:

为何戒赌,程序员用计算机模拟色子猜大小,发现民间策略不管用

策略二输光光次数明显多于策略一,看来玄学不存在


最后发现手头资金大概率会低于初始本金,那要是我们迷恋上了,来他个1000轮呢?

按照这个策略,我模拟出了1000轮后手头的本金:

策略一1000轮后:

为何戒赌,程序员用计算机模拟色子猜大小,发现民间策略不管用

看来玩的越多,策略一输光光的概率也变大了

策略二1000轮后:

为何戒赌,程序员用计算机模拟色子猜大小,发现民间策略不管用

用策略二毫无疑问会使你输光光

看来,结果是清晰的,也就是你参与的越多,那就输的概率越大,输的也是越惨。正应了那句不怕你赢钱,就怕你不来。只有你来了,才会有更多的次数累计。同时,输的金额也被累计。


那为什么这两个民间策略失效了呢?因为就算你的概率大,那最多也只是将胜负的天平搬到理论值,而不会将胜负的天平搬倒。豹子的存在,就决定了,每次下注,必定都是输的概率大。而宏观的规律,对微观的影响是没有的。就算前面1000次都是同一个大小,那下一次,也是概率均等出现,而不是会大概率出固定的值。

为何戒赌,程序员用计算机模拟色子猜大小,发现民间策略不管用

最后赢得都是庄家

民间策略,实际上就是心里安慰,明明没有规律,偏偏要自己找规律。找到的规律,也是不符合统计数学原理的。所以才会出现民间策略失灵的情景。

如果看清这点讨论,知道数学期望。那就会明白,实际上每一次投注,你能拿回来的都要少于投注本身。这样你就不会想着all-in了。

以下是我的代码,运行的话需要安装PHP环境。有兴趣的朋友可以自己下载下来,调调你自己的小窍门是否起效


header("Content-Type: text/html; charset=utf-8");
//计算时间函数
function microtime_float() {
list($usec, $sec) = explode(" ", microtime());
return ((float) $usec + (float) $sec);
}
//掷骰子函数
function get_rand() {
return array("a" => mt_rand(1, 6), "b" => mt_rand(1, 6), "c" => mt_rand(1, 6));
}
//记录每次结果
$jilu = [];
//策略二,计算最近10次,只有在里面有累计出现大或者小超过$count_u次的时候出手压对立面
function cal_jl7($jilu, $count_u, $status) {
$d =$x=0;
if (count($jilu) < 11) {
return 0;
}
//计算最近十吧,返回压大还是压小
for ($i = count($jilu) - 1; $i > count($jilu) - 11; $i--) {
if ($jilu[$i] > 0) {
$d++;
} else {
$x++;
}
}
if ($d > $count_u) {
//要压小
if ($status != 1) {
return 1;
} else {
return -1;
}
} else if ($x > $count_u) {

//要压大
if ($status != 1) {
return -1;
} else {
return 1;
}
} else {
//这把不玩
return 0;
}
}
$start = microtime_float();
//被通杀次数
$ts = 0;
//玩家赢次数
$wo = 0;
//庄家赢次数
$zuang = 0;
//原始资金
$myMoney = 10000;
//没把压多少
$per_cost = 200;
//计数
$all_count = 0;
//一共玩几把
$all_play_times = 500;
//$status策略一设置为1,策略二设置为2
$status = 1;
for ($i = 1; $i <= 100000; $i++) {
$cal = cal_jl7($jilu, 6, $status);
$out = get_rand();
if ($i == 12) {
$ts = 0;
$wo = 0;
$zuang = 0;
}
if (($out["a"] + $out["b"] + $out["c"]) > 10) {
$j = 1;
} else {
$j = -1;
}
$jilu[] = $j;
if ($cal == 0) {
//这把不玩
continue;

} else {
$all_count++;
}
if ($all_count > $all_play_times) {
break;
}
if ($out["a"] == $out["b"] && $out["b"] == $out["c"]) {
$ts++;
$zuang++;
$myMoney -= $per_cost;
} else {
if ($cal == 1) {
if (($out["a"] + $out["b"] + $out["c"]) > 10) {
$wo++;
$myMoney += $per_cost;
} else {
$zuang++;
$myMoney -= $per_cost;
}
} else {
if (($out["a"] + $out["b"] + $out["c"]) > 10) {
$zuang++;
$myMoney -= $per_cost;
} else {
$wo++;
$myMoney += $per_cost;
}
}
}
if ($myMoney == 0) {
echo "已经输光光,共玩了:" . $i . "次
";
break;
}
}
$cost = microtime_float() - $start;
echo "计算费时:" . $cost . "ms" . "
";
echo "通杀:" . $ts . "
";
echo "我赢次数:" . $wo . "
";
echo "庄赢次数:" . $zuang . "
";
echo "赢钱概率 %:" . ($wo / ($wo + $zuang) * 100) . "
";
echo "我的剩余钱:" . $myMoney . "

";
echo "一共玩了几把:" . $all_count;

感谢观看,有不严谨的地方还希望各位多多指教。


分享到:


相關文章: