锁定老帖子 主题:由新闻引出的计算概率方法题
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (1)
|
|
---|---|
作者 | 正文 |
发表时间:2010-06-04
新闻里应该是5个连号接连摇出,程序模拟的是sort后的5连号,不一样呀
roy 写道 我用程序模拟了一下,竟然有48%的概率,附程序,看看是不是我哪里搞错了
public static void main(String[] args) { int rc = 1000000; int mc = 0; for (int i = 0; i < rc; i++) { List<Integer> ai = genRank(); int ri = isMatch(ai); if (ri > 0) { mc ++; // System.out.println(ai); // System.out.println(ri); } } System.out.println(mc); } public static List<Integer> genRank() { Set<Integer> ai = new HashSet<Integer>(); Random r = new Random(); while (ai.size() < 203) { ai.add(r.nextInt(786) + 1); } List<Integer> ri = new ArrayList<Integer>(); ri.addAll(ai); Collections.sort(ri); return ri; } public static int isMatch(List<Integer> ai) { for (int i = 0; i < ai.size() - 4; i ++) { int ac = ai.get(i) + ai.get(i+1) + ai.get(i+2) + ai.get(i+3) + ai.get(i+4); if (ac == ai.get(i) * 5 + 10) { return ai.get(i); } } return 0; } |
|
返回顶楼 | |
发表时间:2010-06-04
mikehuhu 写道 新闻里应该是5个连号接连摇出,程序模拟的是sort后的5连号,不一样呀
roy 写道 我用程序模拟了一下,竟然有48%的概率,附程序,看看是不是我哪里搞错了
public static void main(String[] args) { int rc = 1000000; int mc = 0; for (int i = 0; i < rc; i++) { List<Integer> ai = genRank(); int ri = isMatch(ai); if (ri > 0) { mc ++; // System.out.println(ai); // System.out.println(ri); } } System.out.println(mc); } public static List<Integer> genRank() { Set<Integer> ai = new HashSet<Integer>(); Random r = new Random(); while (ai.size() < 203) { ai.add(r.nextInt(786) + 1); } List<Integer> ri = new ArrayList<Integer>(); ri.addAll(ai); Collections.sort(ri); return ri; } public static int isMatch(List<Integer> ai) { for (int i = 0; i < ai.size() - 4; i ++) { int ac = ai.get(i) + ai.get(i+1) + ai.get(i+2) + ai.get(i+3) + ai.get(i+4); if (ac == ai.get(i) * 5 + 10) { return ai.get(i); } } return 0; } 新闻内容: ---------------------------------- 接到通知,可到现场参观摇号。通过抽签,季老师成了第一个摇号手。季老师共摇出了50个号,在第15次、18次、32次分别摇出了744号、743号和742号。另一个摇号手在第179次和190次摇出了746号和745号。 两个人摇出的号码,连成了742至746的“五连号”。 ---------------------------------- 这里说的不是连续摇出啊 |
|
返回顶楼 | |
发表时间:2010-06-04
概率貌似在49左右
|
|
返回顶楼 | |
发表时间:2010-06-04
iaimstar 写道 概率貌似在49左右 是的,超过48.5% |
|
返回顶楼 | |
发表时间:2010-06-09
最近事情太多,忙的晕头转向。没太多精力研究这个问题。不过零散时间也考虑了下大致有了个计算思路:
1.首先总数量a中取出某个数量g的球的所有组合数量有数学公式可得出a*(a-1)*……*(a-g+1)/g! 2.假设5个球中取3个球,2个球相连的组合如下: 1 1 1 0 0 1 1 0 1 0 1 1 0 0 1 1 0 1 1 0 1 0 1 0 1 1 0 0 1 1 0 1 1 1 0 0 1 1 0 1 0 1 0 1 1 0 0 1 1 1 倒过来看这个组合表,设相连球数为c,那么可以将2个球相连的组合数求法问题分解成:(g个球全选c个球相连数)+(g+1个球,首球必选,剩余g球中任选g-1个,然后c个球相连个数)+……+(a个球,首球必选,剩余a-1球中任选g-1个,然后c个球相连个数) 3.若2有成熟算法,那么2的结果除以1的结果可得概率 |
|
返回顶楼 | |
发表时间:2010-06-09
sjynt131 写道 Mark_Lee 写道 1)先计算在786出现一个5连号的总数有多少: 768-5+1 = 764
2)在计算在203里一个5连号出现的位置总数: 203-5+1 = 199 3)计算符合要求所有出现5连号的总数: 764*199 4)计算768个人选出203人的所有可能总数: 768*767*766* ... *(768-203+1) 步骤3得出的总数除以步骤4得出的总数就是那个概率了,这也太小了,几乎为0 1和4是没问题,但2不对吧,有什么根据? 照你这么算6个球中取3个球,2个连续的概率是: 6-2+1=5 3-2+1=2 2*5/(6*5*4/3/2)=10/20 但实际上是:16/20 1 2 3 1 2 4 1 2 5 1 2 6 1 3 4 1 3 5 1 3 6 1 4 5 1 4 6 1 5 6 2 3 4 2 3 5 2 3 6 2 4 5 2 4 6 2 5 6 3 4 5 3 4 6 3 5 6 4 5 6 汗 的确是有错误 忘记算剩下位的排列了 下面为改正过后的算法 1)先计算在786出现一个5连号的总数有多少: 768-5+1 = 764 2)在计算在203里一个5连号出现的位置总数: 203-5+1 = 199 3)计算剩下的(768-5)个人选出(203-5)人的所有可能总数: 763*762*761* ... *[(768-5)-(203-5)+1] 4)计算符合要求所有出现5连号的总数: 764*199*(步骤3中的总数) 5)计算768个人选出203人的所有可能总数: 768*767*766* ... *(768-203+1) 步骤4的结果除以步骤5的结果即为所求的概率,最后求得概率为199/(768*767*766*765) |
|
返回顶楼 | |
发表时间:2010-06-10
Mark_Lee 写道 sjynt131 写道 Mark_Lee 写道 1)先计算在786出现一个5连号的总数有多少: 768-5+1 = 764
2)在计算在203里一个5连号出现的位置总数: 203-5+1 = 199 3)计算符合要求所有出现5连号的总数: 764*199 4)计算768个人选出203人的所有可能总数: 768*767*766* ... *(768-203+1) 步骤3得出的总数除以步骤4得出的总数就是那个概率了,这也太小了,几乎为0 1和4是没问题,但2不对吧,有什么根据? 照你这么算6个球中取3个球,2个连续的概率是: 6-2+1=5 3-2+1=2 2*5/(6*5*4/3/2)=10/20 但实际上是:16/20 1 2 3 1 2 4 1 2 5 1 2 6 1 3 4 1 3 5 1 3 6 1 4 5 1 4 6 1 5 6 2 3 4 2 3 5 2 3 6 2 4 5 2 4 6 2 5 6 3 4 5 3 4 6 3 5 6 4 5 6 汗 的确是有错误 忘记算剩下位的排列了 下面为改正过后的算法 1)先计算在786出现一个5连号的总数有多少: 768-5+1 = 764 2)在计算在203里一个5连号出现的位置总数: 203-5+1 = 199 3)计算剩下的(768-5)个人选出(203-5)人的所有可能总数: 763*762*761* ... *[(768-5)-(203-5)+1] 4)计算符合要求所有出现5连号的总数: 764*199*(步骤3中的总数) 5)计算768个人选出203人的所有可能总数: 768*767*766* ... *(768-203+1) 步骤4的结果除以步骤5的结果即为所求的概率,最后求得概率为199/(768*767*766*765) 还是有很大偏差哎,先不论目前计算5连号的方法是否正确,有没有考虑到203个被选出的号中6连号、7连号……203连号的数量。这些都包括5连号的,也该把数量计算在内。 另外你计算786个号中选出203个号所有可能总数的公式也是错误的。应该是768*767*766* ... *(768-203+1) /203!才对。 |
|
返回顶楼 | |
发表时间:2010-06-10
sjynt131 写道 Mark_Lee 写道 sjynt131 写道 Mark_Lee 写道 1)先计算在786出现一个5连号的总数有多少: 768-5+1 = 764
2)在计算在203里一个5连号出现的位置总数: 203-5+1 = 199 3)计算符合要求所有出现5连号的总数: 764*199 4)计算768个人选出203人的所有可能总数: 768*767*766* ... *(768-203+1) 步骤3得出的总数除以步骤4得出的总数就是那个概率了,这也太小了,几乎为0 1和4是没问题,但2不对吧,有什么根据? 照你这么算6个球中取3个球,2个连续的概率是: 6-2+1=5 3-2+1=2 2*5/(6*5*4/3/2)=10/20 但实际上是:16/20 1 2 3 1 2 4 1 2 5 1 2 6 1 3 4 1 3 5 1 3 6 1 4 5 1 4 6 1 5 6 2 3 4 2 3 5 2 3 6 2 4 5 2 4 6 2 5 6 3 4 5 3 4 6 3 5 6 4 5 6 汗 的确是有错误 忘记算剩下位的排列了 下面为改正过后的算法 1)先计算在786出现一个5连号的总数有多少: 768-5+1 = 764 2)在计算在203里一个5连号出现的位置总数: 203-5+1 = 199 3)计算剩下的(768-5)个人选出(203-5)人的所有可能总数: 763*762*761* ... *[(768-5)-(203-5)+1] 4)计算符合要求所有出现5连号的总数: 764*199*(步骤3中的总数) 5)计算768个人选出203人的所有可能总数: 768*767*766* ... *(768-203+1) 步骤4的结果除以步骤5的结果即为所求的概率,最后求得概率为199/(768*767*766*765) 还是有很大偏差哎,先不论目前计算5连号的方法是否正确,有没有考虑到203个被选出的号中6连号、7连号……203连号的数量。这些都包括5连号的,也该把数量计算在内。 另外你计算786个号中选出203个号所有可能总数的公式也是错误的。应该是768*767*766* ... *(768-203+1) /203!才对。 对于6连号、7连号以及更多连号的可能,在步骤3中已经有了体现,因为在5连号(看成是个整体)的前后位置的号都是在剩下的号码中随机获得的,它包含了6连号7连号等可能出现的所有情况 至于步骤5的公式,这是基础的排列知识,没有问题。可以测试一下:例如从4个号 1 2 3 4中随机抽取2个号它的所有可能就为: 1 2 2 3 2 1 3 2 由左侧排列可知有12种 1 3 2 4 3 1 4 2 即为 4*(4-2+1) = 12 1 4 3 4 4 1 4 3 如果除以2!结果就是6了 |
|
返回顶楼 | |
发表时间:2010-06-10
sb 记者
|
|
返回顶楼 | |
发表时间:2010-06-10
Mark_Lee 写道 sjynt131 写道 Mark_Lee 写道 sjynt131 写道 Mark_Lee 写道 1)先计算在786出现一个5连号的总数有多少: 768-5+1 = 764
2)在计算在203里一个5连号出现的位置总数: 203-5+1 = 199 3)计算符合要求所有出现5连号的总数: 764*199 4)计算768个人选出203人的所有可能总数: 768*767*766* ... *(768-203+1) 步骤3得出的总数除以步骤4得出的总数就是那个概率了,这也太小了,几乎为0 1和4是没问题,但2不对吧,有什么根据? 照你这么算6个球中取3个球,2个连续的概率是: 6-2+1=5 3-2+1=2 2*5/(6*5*4/3/2)=10/20 但实际上是:16/20 1 2 3 1 2 4 1 2 5 1 2 6 1 3 4 1 3 5 1 3 6 1 4 5 1 4 6 1 5 6 2 3 4 2 3 5 2 3 6 2 4 5 2 4 6 2 5 6 3 4 5 3 4 6 3 5 6 4 5 6 汗 的确是有错误 忘记算剩下位的排列了 下面为改正过后的算法 1)先计算在786出现一个5连号的总数有多少: 768-5+1 = 764 2)在计算在203里一个5连号出现的位置总数: 203-5+1 = 199 3)计算剩下的(768-5)个人选出(203-5)人的所有可能总数: 763*762*761* ... *[(768-5)-(203-5)+1] 4)计算符合要求所有出现5连号的总数: 764*199*(步骤3中的总数) 5)计算768个人选出203人的所有可能总数: 768*767*766* ... *(768-203+1) 步骤4的结果除以步骤5的结果即为所求的概率,最后求得概率为199/(768*767*766*765) 还是有很大偏差哎,先不论目前计算5连号的方法是否正确,有没有考虑到203个被选出的号中6连号、7连号……203连号的数量。这些都包括5连号的,也该把数量计算在内。 另外你计算786个号中选出203个号所有可能总数的公式也是错误的。应该是768*767*766* ... *(768-203+1) /203!才对。 对于6连号、7连号以及更多连号的可能,在步骤3中已经有了体现,因为在5连号(看成是个整体)的前后位置的号都是在剩下的号码中随机获得的,它包含了6连号7连号等可能出现的所有情况 至于步骤5的公式,这是基础的排列知识,没有问题。可以测试一下:例如从4个号 1 2 3 4中随机抽取2个号它的所有可能就为: 1 2 2 3 2 1 3 2 由左侧排列可知有12种 1 3 2 4 3 1 4 2 即为 4*(4-2+1) = 12 1 4 3 4 4 1 4 3 如果除以2!结果就是6了 你这是排列,但题目应该是组合。1,2或2,1是一样的结果,题目并不要求连续摇出5连号,而是摇完号后总体再看是否有5连号。不论是先摇出2后摇出3,还是先摇出3后摇出2,结果的概率计算应该是一样的 |
|
返回顶楼 | |