求0000至9999范围内随机抽取两个无共同数字的4位数的概率的解析推导方法
求0000至9999范围内随机抽取两个无共同数字的4位数的概率的解析推导方法
嘿,我来帮你拆解这个问题的解析推导过程,咱们一步步来,最后就能和你代码算出的结果对上啦:
第一步:先算总样本数
两个数都是从0000到9999里随机选,每个数有10^4种可能,所以总共有 10^4 * 10^4 = 10^8 种数对组合,这和你代码里的分母完全一致。
第二步:分类计算符合条件的数对数量
核心思路是按第一个数使用的不同数字的个数来分类讨论,因为第一个数的数字重复情况会直接影响第二个数的可选范围:
情况1:第一个数是4位相同的数字(比如0000、1111)
- 这类数的总数:0-9每个数字对应一个,共10个。
- 第二个数的要求:不能包含这个重复的数字,所以每一位都有9种选择(排除那个重复数字),可选数的数量是
9^4 = 6561。 - 这部分的数对总数:
10 * 6561 = 65610。
情况2:第一个数用了2个不同的数字
这里又细分成两种子情况:
- 子情况2a:3个相同数字+1个不同数字(比如0001、1112)
- 这类数的总数:先选重复的数字(10种),再选不同的数字(9种),再选不同数字的位置(4个位置里选1个),所以是
10 * 9 * 4 = 360个。 - 第二个数不能包含这两个数字,每一位有8种选择,可选数数量是
8^4 = 4096。 - 这部分数对总数:
360 * 4096 = 1474560。
- 这类数的总数:先选重复的数字(10种),再选不同的数字(9种),再选不同数字的位置(4个位置里选1个),所以是
- 子情况2b:2个相同数字+另外2个相同数字(比如0011、2233)
- 这类数的总数:先选两个不同的数字(组合数C(10,2)=45种),再分配位置(4个位置选2个放第一个数字,剩下的放第二个,C(4,2)=6种),所以是
45 * 6 = 270个。 - 同样,第二个数不能包含这两个数字,可选数数量是
8^4 = 4096。 - 这部分数对总数:
270 * 4096 = 1105920。
- 这类数的总数:先选两个不同的数字(组合数C(10,2)=45种),再分配位置(4个位置选2个放第一个数字,剩下的放第二个,C(4,2)=6种),所以是
情况3:第一个数用了3个不同的数字(比如0012、1123,即一个数字重复2次,另外两个各1次)
- 这类数的总数:先选重复的数字(10种),再选另外两个不同的数字(组合数C(9,2)=36种),然后计算排列数:4个位置里有一个数字重复2次,总排列数是
4!/2! = 12种。所以总数是10 * 36 * 12 = 4320个。 - 第二个数不能包含这3个数字,每一位有7种选择,可选数数量是
7^4 = 2401。 - 这部分数对总数:
4320 * 2401 = 10372320。
情况4:第一个数用了4个完全不同的数字(比如0123、1234)
- 这类数的总数:第一位10种选择,第二位9种(不重复),第三位8种,第四位7种,即
10 * 9 * 8 * 7 = 5040个。 - 第二个数不能包含这4个数字,每一位有6种选择,可选数数量是
6^4 = 1296。 - 这部分数对总数:
5040 * 1296 = 6531840。
第三步:求和得到符合条件的总数
把所有情况的数对数量加起来:
65610 + 1474560 + 1105920 + 10372320 + 6531840 = 19550250
完全和你代码算出的结果一致!
最后计算概率
概率就是符合条件的数对总数除以总可能数:19550250 / 10^8 = 0.1955025
备注:内容来源于stack exchange,提问作者TDG
相关产品推荐
相关产品推荐

