经常在直播中刷到对对碰游戏,好奇概率是怎么分布的,故用python做了个模拟实验。
实验假设:有一大箱含有type_num种颜色的球,现在要随机拿出initial_draws个,每当拿出的球中出现1对相同颜色的2个球就把这2个球放到一边并重新从箱子里拿出1个球(如果出现2对相同颜色的2个球则放一边并重新拿2个球,以此类推),若出现3个一样颜色的球则随机放2个球到一边并重新拿1个球,与此同时可以指定lucky_color_num个幸运颜色,当拿出指定的幸运颜色时,可以再拿1个球,最后所有拿出的球中没有重复的球时过程结束,进行100000次实验模拟最后总共拿出球的可能个数及其对应概率。
以下为实现代码:
可自行设定type_num、initial_draws、lucky_color_num参数得到拿球平均数、众数、中位数及可视化分布图;也可设定ball_cost、transport_cost、other_cost参数计算最终成本。
#!/usr/bin/env python
# -*- coding: UTF-8 -*-
"""
@File : ball_experiment.py
@Author : ggb
@Date : 2024/9/26 14:08
@Desc : 拿球模拟实验
"""
import random
from collections import Counter
import tqdm
import matplotlib.pyplot as plt
def calculate_median(data):
""" 计算中位数 """
data_sorted