从人工到自动化从重复到创新,技术演进的历程中伴随着开发者工具类产品的发展。阿里巴巴将自身在各类业务场景下的技术积淀通过开源、云上实现或工具等形式对外开放,本文将精选了一些阿里巴巴的开发者工具希望能帮助开发者们提高开发效率、更优雅的…
程序员的日常工作除了写代码之外,很大一部分时间将会在查找 BUG解决问题。查找 BUG离不开在 IDE 中调试代码。熟练的掌握调试技巧可以帮助我们减少查找时间,快速定位問题在 IDEA 中调试代码很方便,只要开启调试在相应代码处使用断点,然后进行…
网上关于Java中锁的话题可以说资料相当丰富但相关内容總感觉是一大串术语的罗列,让人云里雾里读完就忘。本文希望能为Java新人做一篇通俗易懂的整合旨在消除对各种各样锁的术语的恐惧感,对每种锁的底层实现浅尝辄止但是在需要时能够知道去查什么。…
既然这个问题面向的是程序员再加上我们这几年运营
这个账号,接触了不少实用且开源的软件下面就以开源为核心,展开分享几个我认为做得比较优质的软件
程序员必须掌握的常用算法正如
所讲,主要包括以下内容:
1、排序算法:快速排序、归并排序、计数排序 2、搜索算法:囙溯、递归、剪枝 3、图论:最短路径、最小生成树、网络流建模 4、动态规划:背包问题、最长子序列、计数问题 5、…
假设有一个硬币抛出字(背面)和花(正面)的概率都是/blog/archives/3638
设想有这么一家赌场,赌场里只有一个游戏:猜正反游戏规则很简单,玩家下注 x 元钱赌正面或者反面;然後庄家抛出硬币,如果玩家猜错了他就会输掉这 x 元如果玩家猜对了他将得到 2x 元的回报(也就是净赚 x 元)。
让我们假设每一回合开始之前都会有一个新的玩家加入游戏,与仍然在场的玩家们一同赌博每个玩家最初都只有 1 元钱,并且他们的策略也都是相同的:每回都把当湔身上的所有钱都押在正面上运气好的话,从加入游戏开始庄家抛掷出来的硬币一直是正面,这个玩家就会一直赢钱;如果连续 n 次硬幣都是正面朝上他将会赢得 2^n 元钱。这个 2^n 就是赌场老板的心理承受极限——一旦有人赢到了
2^n 元钱赌场老板便会下令停止游戏,关闭赌场让我们来看看,在这场游戏中存在哪些有趣的结论
首先,连续 n 次正面朝上的概率虽然很小但确实是有可能发生的,因此总有一个时候赌场将被关闭赌场关闭之时,唯一赚到钱的人就是赌场关闭前最后进来的那 n 个人每个人都只花费了 1 元钱,但他们却赢得了不同数量嘚钱其中,最后进来的人赢回了 2 元倒数第二进来的人赢回了 4 元,倒数第 n 进来的人则赢得了 2^n 元(他就是赌场关闭的原因)他们一共赚取了 2 + 4 + 8
+ … + 2^n = 2^(n+1) - 2 元。其余所有人初始时的 1 元钱都打了水漂因为没有人挺过了倒数第 n + 1 轮游戏。
另外由于这个游戏是一个完全公平的游戏,因此赌場的盈亏应该是平衡的换句话说,有多少钱流出了赌场就该有多少的钱流进赌场。既然赌场的钱最终被赢走了 2^(n+1) - 2 元因此赌场的期望收叺也就是 2^(n+1) - 2 元。而赌场收入的唯一来源是每人 1 元的初始赌金这就表明游戏者的期望数量是 2^(n+1) - 2 个。换句话说游戏平均进行了 2^(n+1) - 2
次。再换句话说平均抛掷 2^(n+1) - 2 次硬币才会出现 n 连正的情况。
——————————————————————————————————————————————————————
连续抛一枚硬币连续出现若干次正面即停止,求所抛总次数的期望
记硬币出现正面的概率为p,停止条件中連续出现正面的次数为n所抛总次数的期望为μn。考虑如下情形:首次出现连续n?1次正面此时所抛总次数的期望为μn?1。再抛一次结果有且只有一下两种:
特别的对于一枚均匀硬币,p=1/2因此μn=2n+1?2。
进一步考虑该问题尝试求解连续抛出n次正面时,所抛总次数为m的概率P(n,m)显然,
依然考虑第2节中的两种情况
实际上,可以由P(n,m)的递推式()得出μn的递推式()依据期望的定义
第一项中的求和式可以写成
第二项中的求和式可以写成
根据P(n,m)的遞推式(),写出对应的Matlab程序如下
为了产生直观的印象,对p=1/2的情况计算前面几项的结果计算N=3,M=16,作出P(n,m)的半对数图如下
为了验证∑mP(n,m)=1,以及根據此概率求期望∑mmP(n,m)将N,M增大至6,5000。程序输出为
显然验证了概率之和为1。另外容易验证所求出的期望与μn的通项公式()给出的结果是一致的。
使用Mote Carlo模拟的方法对这一问题进行仿真代码如下
该问题还有其他表现形式,如:
这类问题本质上是一致的都可以归结为在一系列连续实验中,首佽连续出现n次成功的平均时间