有人好奇豆包的算法
这里我发出来他写的代码
import numpy as np
from 网页链接 import hypergeom
# 计算首回合抽到至少一张VIP的概率
def calculate_probability(num_vip, deck_size, hand_size):
# 计算抽不到VIP的概率
prob_no_vip = hypergeom.pmf(0, deck_size, num_vip, hand_size)
# 抽到至少一张VIP的概率
prob_at_least_one = 1 - prob_no_vip
return round(prob_at_least_one * 100, 2)
# 沙奈朵卡组参数
deck_size = 60 # 标准卡组60张
num_vip = 3 # 三张VIP
hand_size = 7 # 首回合手牌7张
dream_draw = 6 # 梦幻特性抽牌数
# 计算基础概率:首回合手牌7张中抽到至少一张VIP
base_prob = calculate_probability(num_vip, deck_size, hand_size)
# 计算加上梦幻特性后的概率:手牌7张+梦幻抽6张,共13张
dream_prob = calculate_probability(num_vip, deck_size, hand_size + dream_draw)
# 计算期望抽到的VIP数量(修正版)
expected_vip = hypergeom.mean(deck_size, num_vip, hand_size + dream_draw)
print(f"基础情况:首回合7张手牌中抽到至少一张VIP的概率 = {base_prob}%")
print(f"加上梦幻特性:首回合最多13张牌中抽到至少一张VIP的概率 = {dream_prob}%")
print(f"期望抽到的VIP数量 = {expected_vip:.2f}张")
# 计算连续5局游戏中,至少有1局首回合抽到VIP的概率
prob_in_5_games = 1 - (1 - dream_prob/100) ** 5
print(f"连续5局游戏中,至少有1局首回合抽到VIP的概率 = {prob_in_5_games:.2f}%")
# 计算连续10局游戏中,至少有5局首回合抽到VIP的概率
from 网页链接 import binom
prob_5_of_10 = binom.cdf(4, 10, dream_prob/100)
prob_5_of_10 = 1 - prob_5_of_10
print(f"连续10局游戏中,至少有5局首回合抽到VIP的概率 = {prob_5_of_10:.2f}%")
import numpy as np
from 网页链接 import hypergeom
# 计算首回合抽到至少一张VIP的概率
def calculate_probability(num_vip, deck_size, hand_size):
# 计算抽不到VIP的概率
prob_no_vip = hypergeom.pmf(0, deck_size, num_vip, hand_size)
# 抽到至少一张VIP的概率
prob_at_least_one = 1 - prob_no_vip
return round(prob_at_least_one * 100, 2)
# 沙奈朵卡组参数
deck_size = 60 # 标准卡组60张
num_vip = 3 # 三张VIP
hand_size = 7 # 首回合手牌7张
dream_draw = 6 # 梦幻特性抽牌数
# 计算基础概率:首回合手牌7张中抽到至少一张VIP
base_prob = calculate_probability(num_vip, deck_size, hand_size)
# 计算加上梦幻特性后的概率:手牌7张+梦幻抽6张,共13张
dream_prob = calculate_probability(num_vip, deck_size, hand_size + dream_draw)
# 计算期望抽到的VIP数量(修正版)
expected_vip = hypergeom.mean(deck_size, num_vip, hand_size + dream_draw)
print(f"基础情况:首回合7张手牌中抽到至少一张VIP的概率 = {base_prob}%")
print(f"加上梦幻特性:首回合最多13张牌中抽到至少一张VIP的概率 = {dream_prob}%")
print(f"期望抽到的VIP数量 = {expected_vip:.2f}张")
# 计算连续5局游戏中,至少有1局首回合抽到VIP的概率
prob_in_5_games = 1 - (1 - dream_prob/100) ** 5
print(f"连续5局游戏中,至少有1局首回合抽到VIP的概率 = {prob_in_5_games:.2f}%")
# 计算连续10局游戏中,至少有5局首回合抽到VIP的概率
from 网页链接 import binom
prob_5_of_10 = binom.cdf(4, 10, dream_prob/100)
prob_5_of_10 = 1 - prob_5_of_10
print(f"连续10局游戏中,至少有5局首回合抽到VIP的概率 = {prob_5_of_10:.2f}%")










