请选择 进入手机版 | 继续访问电脑版

大话骰

 找回密码
 立即注册
搜索
查看: 59|回复: 0

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

[复制链接]

1092

主题

1092

帖子

3278

积分

论坛元老

Rank: 8Rank: 8

积分
3278
发表于 3 天前 | 显示全部楼层 |阅读模式
俗话说,十赌九输。但有些人就是不信,以为自己有点小窍门,有点小门道,不会输钱。实则不知,当你踏进赌场的门时,已经输了。这里就运用计算机模拟技术,来验证下那些民间策略为何不管用。好劝深陷其中的人及早抽身上岸。



澳门娱乐场押大小

先讲游戏规则:这是在澳门娱乐场常见的一种游戏规则,一共三个色子,放到倒扣的碗中摇动,然后翻开碗,看朝上的点数。其每个点数加一起大于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环境。有兴趣的朋友可以自己下载下来,调调你自己的小窍门是否起效
<?phpheader("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 . "次<br/>"; break; }}$cost = microtime_float() - $start;echo "计算费时:" . $cost . "ms" . "<br/>";echo "通杀:" . $ts . "<br/>";echo "我赢次数:" . $wo . "<br/>";echo "庄赢次数:" . $zuang . "<br/>";echo "赢钱概率 %:" . ($wo / ($wo + $zuang) * 100) . "<br/>";echo "我的剩余钱:" . $myMoney . "<br/>";echo "一共玩了几把:" . $all_count;
感谢观看,有不严谨的地方还希望各位多多指教。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
回复

使用道具 举报

发表回复

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

快速回复 返回顶部 返回列表