扑克牌去王随机洗均,4人拿,同色牌数量分布情况

打桥牌的时候会用到,同色牌一般出几手会出现“打绝一色”?

发牌拿到牌的情况,在洗牌时就注定了。如果是随机洗均的情况下是什么情况,可以用程序验证一下。

猜测一般是3、3、3、4这样拿一色牌的情况是最多的。可以打3手。

用perl程序验证一下。

  1. @card=(1..52); #52张牌
  2. %all_sanbu;    #统计表
  3. sub by_rand_sort
  4. {
  5.     #return rand(1) cmp rand(1); #
  6.     return rand(1) cmp 0.5;      #两种一样的结果 
  7. };
  8. sub randone
  9. {
  10.     my @mans=(0,0,0,0);       #一种花色
  11.     # my @mans2=(0,0,0,0);    #
  12.     # my @mans3=(0,0,0,0);    #
  13.     # my @mans4=(0,0,0,0);    #其余花色
  14.     my $id=0;
  15.     for my $one ( sort by_rand_sort @card )
  16.     {
  17.         if($one<=13 and $one>=1)
  18.         {
  19.             $mans[$id]++;
  20.         }
  21.         # if($one>=14 and $one <=26 )
  22.         # {
  23.             # $mans2[$id]++;
  24.         # }
  25.         # if($one >= 27 and $one <= 39 )
  26.         # {
  27.             # $mans3[$id]++;
  28.         # }
  29.         # if($one >=40 and $one <=52 )
  30.         # {
  31.             # $mans4[$id]++;
  32.         # }
  33.         $id++;
  34.         if($id>3){$id=0};
  35.     }
  36.     
  37.     my $ids="";
  38.     for my $i (sort @mans)
  39.     {
  40.         $ids=$ids.$i.",";
  41.     }
  42.     $all_sanbu{$ids}++;
  43.     
  44.     # $ids="";
  45.     # for my $i (sort @mans2)
  46.     # {
  47.         # $ids=$ids.$i.",";
  48.     # }
  49.     # $all_sanbu{$ids}++;
  50.     
  51.     # $ids="";
  52.     # for my $i (sort @mans3)
  53.     # {
  54.         # $ids=$ids.$i.",";
  55.     # }
  56.     # $all_sanbu{$ids}++;
  57.     
  58.     # $ids="";
  59.     # for my $i (sort @mans4)
  60.     # {
  61.         # $ids=$ids.$i.",";
  62.     # }
  63.     # $all_sanbu{$ids}++;
  64. };
  65. sub main
  66. {
  67.     while ( $time-- >0 )
  68.     {
  69.         randone();
  70.     };
  71. };
  72. $time=10000;
  73. print "开始".$time."次随机发牌/n";
  74. main();
  75. print "输出模拟结果/n";
  76. $xiaozu=0;
  77. while ( ($k,$v)=each( %all_sanbu) )
  78. {
  79.     print $v."次".$k."/n";
  80.     $xiaozu++;
  81. }
  82. print "一共".$xiaozu."组/n";
  83. system("pause");
  84.  

三次运算结果:

 

-----------------------------------------------------------------------------------------

开始10000次随机发牌
输出模拟结果
1301次3,3,3,4,
278次1,2,5,5,
958次2,2,4,5,
2468次2,3,4,4,
1233次1,3,4,5,
4次0,1,6,6,
8次0,2,3,8,
92次0,4,4,5,
15次0,3,3,7,
6次0,1,5,7,
34次2,2,2,7,
284次1,4,4,4,
289次1,3,3,6,
19次1,1,4,7,
43次0,2,5,6,
380次1,2,4,6,
3次1,1,3,8,
1次0,1,4,8,
156次1,2,3,7,
6次1,2,2,8,
48次1,1,5,6,
519次2,2,3,6,
84次0,3,4,6,
1679次2,3,3,5,
1次0,1,3,9,
71次0,3,5,5,
20次0,2,4,7,
一共27组


开始100000次随机发牌
输出模拟结果
2734次1,2,5,5,
55次0,1,6,6,
1011次0,4,4,5,
158次0,3,3,7,
435次2,2,2,7,
3009次1,3,3,6,
1次0,0,6,7,
3923次1,2,4,6,
22次0,1,4,8,
1386次1,2,3,7,
1次0,0,5,8,
5322次2,2,3,6,
1043次0,3,4,6,
227次0,2,4,7,
12244次3,3,3,4,
10629次2,2,4,5,
12340次1,3,4,5,
23841次2,3,4,4,
69次0,2,3,8,
2986次1,4,4,4,
55次0,1,5,7,
1次0,1,10,2,
456次0,2,5,6,
247次1,1,4,7,
1次0,0,4,9,
69次1,1,3,8,
138次1,2,2,8,
514次1,1,5,6,
16403次2,3,3,5,
4次0,2,2,9,
2次0,1,3,9,
664次0,3,5,5,
10次1,1,2,9,
一共33组


开始1000000次随机发牌
输出模拟结果
27339次1,2,5,5,
473次0,1,6,6,
9990次0,4,4,5,
1812次0,3,3,7,
4165次2,2,2,7,
30153次1,3,3,6,
36次0,0,6,7,
39556次1,2,4,6,
238次0,1,4,8,
14258次1,2,3,7,
10次0,0,5,8,
52260次2,2,3,6,
9746次0,3,4,6,
2329次0,2,4,7,
123778次3,3,3,4,
239029次2,3,4,4,
106354次2,2,4,5,
121949次1,3,4,5,
625次0,2,3,8,
29372次1,4,4,4,
672次0,1,5,7,
11次0,1,10,2,
4585次0,2,5,6,
2766次1,1,4,7,
4次0,0,4,9,
701次1,1,3,8,
1221次1,2,2,8,
5317次1,1,5,6,
1次1,1,1,10,
164242次2,3,3,5,
42次0,2,2,9,
45次0,1,3,9,
6816次0,3,5,5,
105次1,1,2,9,
一共34组

 

---------------------------------------------------------------------

 

可以看出,有正态分布的情况,向平均数量分布聚拢。不过很奇怪的是,最多出现的是2、3、4、4这种分配。

 

为什么不是3、3、3、4最多呢?随机数产生牌分布还不够随机的问题?

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值