2012-02-12 wcdj
问题描述:
一个骰子有6面,概率均匀,我有7件事要随机均匀选择,用最少的扔掷次数如何仍?
问题扩展:如果我有4件事,5件事,8件事,9件事,10件事 …… n件事要选择,那么我如何用最少的扔掷次数来做到均匀分布?
From: 问题来自这里
思路:
注意问题中的关键字:(1) 最少扔掷的次数 (2) 要求概率均匀分布
用容易理解的方式再将问题描述一遍:我们周末决定去聚餐,此时有6家备选饭店供我们选择,为了公平,用骰子扔掷一次即可以随机选出一家饭店。
但是,此时如果有7家备选饭店,同样要做到公平,我们如何用6个面的骰子选择去哪家饭店呢?
方法:
用骰子扔2次,可以得到 [7, 42] 区间中的一个数(视为6进制),假设扔掷的数表示为m,如果 m=7 则舍弃,否则将 m mod 7 得到的数即为最终结果。
PS: m=7 时,会使得 0 的概率变大,所以要舍弃。
将上述表述再换种方式理解,用骰子扔2次,可以得到 [7, 42] 区间中的一个数,即此时得到了 36 个随机数,对应区间 [1, 36]。因此,假设扔掷的数表示为m,如果 m=36 则舍弃,否则将 m mod 7 得到的数即为最终结果。同理,当 m=36 时,会使得 1 的概率变大,所以要舍弃。
结论:
(1) 灵活使用N进制的思想,虽然生活中多用10进制。本题使用的是6进制的思想,即表示为: result = Y * 6 + X,其中,X 表示第一次扔掷的点数,Y 表示第二次扔掷的点数。
(2) 使用求和的方法不满足概率均匀分布,求和的结果属于正态分布,中间值的概率最大,出现最大值和最小值的概率最小。