编写程序,让用户猜一猜是硬币的正面还是反面

编写程序,让用户猜一猜是硬币的正面还是反面,第1张

intz=0//记录正面次数intf=0//记录反面次数for(inti=0i<1000i++){if((int)(Math.random()*2)==0){z++/瞎旁闷/产生随机数为0时正面出现次启返数+1否则出现的为反面}else{f++}}System.out.println("正磨弯面出现次数"+z)System.out.println("反面出现次数"+f)以上回答你满意么?

“ 知识改变命运,这不是一句空话。 ”

*首发于2019年5月,本文为更新版

金钱永不眠,屠夫问候各位早安。

上次的《给我1枚硬币》里,屠夫以“掷硬币猜正反”作为赌局,通过控制最大最小下注额赢下了984个赌徒,胜率超过98.5%。

有同学好奇:

有没有胜率达到100%的必胜法呢?

答案是……

有!

还是用硬币,这次只需要多1枚,屠夫就能让1000个赌徒 一·个·不·留 。

而且收益能从上次的300万,提升到13个亿!

这次的玩法跟上次不一样:

比对的结果无非3种:两枚硬币都为正面、都为反面或者一正一反。

如果都为正面,本局您获胜,野宽屠夫向您支付300元

如果都为反面,本局您依然获胜,屠夫向您支付100元

如果一正一反,本局屠夫获胜,您向屠夫支付200元

上述规则可以归纳为下面这张表格:

在这个规则之下,双方能控制的,只有自己那枚硬币是出正面还是出反面。

屠夫只能控制自己硬币的正反,无法决定您出正还是反;

当然了,您也只能决定自己出硬币的正反面,无法影响屠夫的策略。

一般来说,应该会是:一局两正、一局两反、一局我正你反、一局我反你正,合起来的结果刚好为0,至少您并不吃亏……

对吧?

这次的下注规则总共3条。

屠夫依然使用 * , 模拟出1亿场赌局 。

这1亿场也是分情况的:

一方面,赌徒可以决定自己的硬币出正面的比例(记为p)。采用不同的p,就相当于用了不同的策略,所以 赌徒允许更换5种不同的策略 ,同一种策略戚顷赌2万场;

另一方面,赌徒数量达到1000,同一种策略里的各种情况都能覆盖到,避免“偶然”和“意外”影响结果。

* 利用海量随机数模拟出一个事件的多种可能,详情可参考 《

虽说屠夫是制定规则的“庄家”,但每局里硬币的正反面,是赌徒 自行决定 的。

比如屠夫总出正面,您可以跟着出正面;

总出反面,您又可以跟着出反面;

总是一正一反,您又可以跟着一正一反了。

很公平的,对吧?

看标题都知道,这次屠夫要讲的不再是爆仓,所以下注规则就直接剔除“爆仓因素”。

每一名赌徒在一种策略中可以玩2万场,只要还没到2万场,总有机会赢回来。

所以这次 赌徒们的资金量是无限的 ,不存在上次的情况。

写入程序后,大致是这样的:

屠夫把话说在前头:

上一回有爆仓,赌徒的存活率是1.5%;

这一回没有爆仓, 屠夫可以让赌徒的存活率变为0 。

不是趋近于0 ,而是等于0 ——

正如规则所说,庄家和赌徒可以各自决定2万场里 自己的硬币出正面的比例p ,形成不同的策略。

不妨苛刻一点:

为了简便起见,这里设定了赌徒的5种策略分别是p = 1.00、0.80、0.50、0.20和0.00。

即:全正面、80%正面、正反五五开、20%正面和全反面。

一起来看看,结果如何?

输得最多的赌徒负债40万,输得最少的赌徒负债也接近20万。

屠夫从1千名赌徒手里赢下了3个亿:

这1000名赌徒的余额变化统计如下图。

每一根细细的红线,代表1名赌徒在这种策略下的余额变化情况。

可以看到,1000名赌徒的余额,只有前1000局里有少数勉强为正的。整体一路走低,最终全部负资产。

屠夫从1千名赌徒手里赢下了2.84亿:

这颂仔亮1000名赌徒的余额统计如下图:

1000名赌徒的余额,一路走低,全是负的。

屠夫从1千名赌徒手里赢下了2.58亿:

这1000名赌徒的余额统计如下图:

1000名赌徒的余额,一路走低,全是负的。

屠夫从1千名赌徒手里赢下了2.36个亿:

这1000名赌徒的余额统计如下图:

1000名赌徒的余额,一路走低,全是……

等等!

随着正面比例下降,赌徒们亏的钱越来越少了。

如果全都出反面, 是不是就能赢钱呢?

毫不意外地,屠夫从1千名赌徒手里赢下了2.20个亿:

这1000名赌徒的余额统计如下图:

1000名赌徒的余额,依然一路走低,完全没有抵抗的机会。

5种策略变化,1000名赌徒,合计1亿场赌局。

屠夫赢下了 12.98亿 。

有的同学可能会说:

您可以通过自己构造一个蒙特卡洛模拟,不断调整参数尝试。

但是屠夫十分肯定,在这个游戏里,赌徒必输无疑。

因为 ——

这个博弈问题,是有数学证明的。

这个游戏,表面上是概率问题,实质是博弈问题。

简化的博弈模型里只有两个变量:

赌徒每局赢钱的期望(均值)可以通过下面的公式计算:

要确保屠夫这个庄家能赚钱,只需要确保赌徒的赢钱期望小于0,也就是 E(p_gb)<0 即可。

那么这个不等式有解吗?

有!

*对证明过程感兴趣的同学,可以,李永乐老师给出了详尽的数学证明。

什么叫“恒成立”?

就是不管赌徒如何调整自己的策略,只要屠夫出正面的概率保持在1/3到2/5之间,且重复次数足够多 —— 比如模拟中的2万场

—— 赌徒一定输钱!

这次模拟里,屠夫出正面的概率在 37% 左右,刚好落在1/3到2/5之间:

换句话说,屠夫用的是这套规则之下的“必胜法”。

既然是必胜,无论赌徒换多少种策略,都是无济于事的。

这场游戏里,

碾压赌徒的不是资金量,

而是 数学 。

熟悉屠夫的同学应该知道,屠夫每次拿赌博举例,都是讲投资。

这次想讲的,是 “跟庄” 。

上述模拟里屠夫扮演的庄家,也可以是“庄股”的庄家;那些赌徒,就是一群试图“跟庄”的散户。

表面上 ,散户似乎可以通过“跟庄”赚到钱 ——只要做多做空的方向跟庄家一致(硬币同正或同反)。

实际上 ,博弈的规则让庄家有“必胜法”,这同时也是散户的“必败法”。

庄家不是来给散户送钱的。他们一定会利用数学来制定规则,使自己处在“必胜”之中。

即便看不懂复杂的数学证明,1亿场赌局的蒙特卡洛模拟,也已说明了事实。

在数学的威力之下,跟庄,不会有任何幸存的空间。

知识改变命运,这不是一句空话。

上述1000个赌徒如果有足够的知识,就能看穿博弈规则中的诡计,就不会输掉13个亿。

书店投资类畅销书中,总能见到些“跟庄秘籍”,真是无比讽刺。

屠夫希望,看完这篇文章的各位,

在记得 “庄家有必胜法” 之余,

再记住一件事:


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/12265740.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-24
下一篇 2023-05-24

发表评论

登录后才能评论

评论列表(0条)

保存