import random
def select():
"""
选择四张牌
:return: 返回四张牌的序号,0-15
"""
se = []
while se.__len__() < 4:
i = random.randrange(16)
flag = False
for n in se:
if n == i:
flag = True
break
if not flag:
se.append(i)
return se
if __name__ == '__main__':
pokers = ['a'] * 4 + ['b'] * 4 + ['c'] * 4 + ['d'] * 4
# 和上次选出的牌一样的次数
count = 0
# 实验总次数
time = 100000
for i in range(time):
se = select()
option = []
for i in se:
option.append(pokers[i])
i = random.randrange(4)
j = random.randrange(4)
if option[i] == option[j]:
count += 1
print(count/time)
这个题意,我理解错了两次,裂开 我对题目稍微扩展一下: 有4副相同的,每副牌有4张不同的牌(就是每副牌都是A B C D这4张)。先从这16张牌中,随机选4张出来(最开始想的是每副牌随机一张,其实是从所有的16张随机选4张)。然后,在这4张牌中随机选择一张牌,然后把抽出的一张放回3张中,再随机选择一张牌。与上次选出的牌一样的概率是() 题解: 假设第一次抽中的牌是A,那么抽第二次的时候与第一次抽的是同一张牌(是同一张牌,不是另一张A)的概率是1/4(抽中了同一张,牌面肯定是相同的)。不同张的概率是3/4,不同张的时候抽中也是牌A的概率是3/15(这个3/15的概率就是题目中“先从这16张牌中,随机选4张出来”中选择第二张牌的时候,第二张牌为A的概率),所以答案是1/4+3/4 * 3/15 = 2/5
这题可以正面做,就是计算过程会很复杂。
首先,要理解题意,16张牌中4种花色的牌各4张。
第一步,求从16张牌中抽出4张的各种情况的概率,考虑一张一张抽出,不妨设第一张抽出的牌一定是花色。第一张抽出
是等概率事件,且不影响后续计算,具体来说,有
。
按花色的个数分情况讨论,
① ,
② ,
可以发现,不论是第4次、第3次还是第2次抽出非的牌,概率值是不变的(参考抽签问题),之后会对类似情况进行合并,
,
③ ,
④ ,
注:与假设抽到的第一种花色为类似,同样可以假设抽到的第二种花色为
,是
个
合并,第三种第四种仍然类似,该注下略,
⑤ ,
⑥ ,
⑦ ,
验算可得总概率为
第二步,求4张中抽出1张再放回再抽出同花色的概率,考虑某花色在张中占据了
张,显然可得两次都取到该花色的概率为
。
可以对花色分布情况进行讨论,如表示
种不同的花色分别占据
张。
① ,
② ,
③ ,
④ ,
⑤ ,
综上,可得题目所求概率为