抓牌抓到8个2的概率到底是多少
题主啊,我想看看你的代码,因为我自己的代码算出来,每1000000次试验中,有人\u0026gt;=7张2的次数在770~850之间浮动啊。注:下面的代码使用了C++11开始提供的random库,来保证真的是在指定范围内等概率随机的。注2:使用的洗牌方法,是如何测试洗牌程序 | | 酷 壳 - CoolShell 中提到的Fisher-Yates shuffle。注3:因为使用了C++11特性,所以,CFree不够看了,换Dev-C++,Orwell Dev-C++ 5.4.2以及以上的,自带MinGW的版本吧~可以选择C++11 编译了#include \u0026lt;stdio.h\u0026gt;#include \u0026lt;ctype.h\u0026gt;#include \u0026lt;string.h\u0026gt;#include \u0026lt;stdlib.h\u0026gt;#include \u0026lt;limits.h\u0026gt;#include \u0026lt;math.h\u0026gt;#include \u0026lt;algorithm\u0026gt;#include \u0026lt;random\u0026gt;#include \u0026lt;time.h\u0026gt;using namespace std;typedef long long ll;int arr;int cnt;int main(){ int times=1000000; int threshold=7; while(1){ int accept=0; std::default_random_engine generator(time(NULL)); for(int T=0;T\u0026lt;times;T++){ for(int i=0;i\u0026lt;104;i++)arr=i; fill(cnt,cnt+4,0); for(int i=0;i\u0026lt;104-1;i++){ std::uniform_int_distribution\u0026lt;int\u0026gt; dis(i,103); int item=dis(generator); swap(arr,arr); } //假设前8张牌(0~7)为我们关心的8张2,其他牌是什么这里不在意, //那我们要知道这8张牌的去向,或者说,在谁的手上。 //这里假设shuffle完以后0~25给A,26~51给B,依此类推。 for(int i=0;i\u0026lt;104;i++){ if(arr\u0026lt;8)cnt++; } for(int i=0;i\u0026lt;4;i++){ if(cnt\u0026gt;=threshold){ accept++; break; } } } printf("%d\",accept); } return 0;}
=====================================================看到楼上的回答,终于觉得,Now we are talking了。现在仔细想想,觉得8张2比7张及更多的2容易一些。(7张以及更多,容易出现算少了/算多了的情况,8张没那么多事)。对8张,我的思路:和下面代码一样,0~7代表8张2,0~25号给A,26~51号给B,以此类推。那么,一个洗好的牌,给出去8张2在一个人手上,就意味着:这8张2在同一个人要发到的104/4=26张牌的位置中随便挑8个,自己内部还随便排,其他的牌也随便排。然后考虑到是4个人,一个人的概率直接*4写出来就是:
这和我现在让电脑模拟出来的,每10000000(1千万)次实验中有235~255次有人抓8张2,还是吻合的。然后是至少7张的情况。仿照8张的处理思路,在8张中选出7张,这7张给同一个人,剩下的其他牌……!!!不能随便的就处理了第8张2!!!
推荐阅读
- 山西打掉黑恶势力1698个涉案资产417.7亿元
- |此时此刻68个预警!气象部门紧急提醒!
- 淘宝宝贝排名的128个人气因素分别是啥,每个因素所占的比例是多少
- 评选表彰|“全国文明城市”江苏已有28个!
- 江苏|全国文明城市江苏已有28个 盐城排名第二
- 山东临沂有哪些互联网行业的公司
- 江苏|江苏全国文明城市共有28个 总数和占比均居各省(区)第一
- 家族|岭南教育冲刺港交所:前8个月营收超2亿 贺惠山家族色彩浓厚
- 犯罪|十一假期交警严查的三种车,抓到可罚10万,希望你没有
- 直播吧|F1巴林站排位赛:汉密尔顿夺生涯第98个杆位 法拉利无缘Q3