qq_42674918 2018-12-03 13:01 采纳率: 50%
浏览 919
已采纳

python3如何实现对这个数学概率论问题的解决?邮箱与信封问题.

有5封信投入4个信箱,求下列事件的概率

1)第一,二号邮箱各投入一封信

2)有一个信箱有三封信

3)仅有一个信箱没有信

4)第二个信箱没有信

#注:每个信封(a,b,c,d,e)和信箱(A,B,C,D)都是不同的个体.
#如果可能的话,最好代码能够实现打印全部可能性以及每个问题的可能性

  • 写回答

2条回答 默认 最新

  • qq_42674918 2021-09-26 17:17
    关注
    
    
    ```python
    import random
    def mail_problem_handler(mail_num, mail_box, count):
        """
    
        :param mail_num:
        :param mail_box:
        :return:
        """
        all_set = []
        with open(r"C:\Users\ZhanJens\Desktop\fot_test01.txt", "w") as f:
            while len(all_set) < count:
                print(len(all_set))
                mail_box_dict = {}
                for b in range(0, mail_box):
                    mail_box_dict[b] = 0
    
                key_list = []
                for i in range(0, mail_box):
                    key_list.append(i)
    
                for m in range(0, mail_num):
                    choice_box = random.choice(key_list)
                    mail_box_dict[choice_box] += 1
    
                str1 = ""
                for x in mail_box_dict:
                    str1 = str1 + str(mail_box_dict[x]) + '#'
    
                if str1 not in all_set:
                    all_set.append(str1)
                    f.write(str1 + "\n")
        return all_set
    
    def Find_index(list, x):
        """
            找到list中x元素的下标
        :param list:
        :param x:
        :return:
        """
        for i, item in enumerate(list):
            if x in item:
                return i
        else:
            return None
    
    if __name__ == '__main__':
        results = mail_problem_handler(5, 4, 56)  # 将5封信随机放入4个邮箱,会出现多少种可能性
        with open(r"C:\Users\ZhanJens\Desktop\fot_test01.txt", "r") as f:
            data = f.readlines()
            Q1 = 0
            Q1_list = []
            Q2 = 0
            Q2_list = []
            Q3 = 0
            Q3_list = []
            Q4 = 0
            Q4_list = []
            for i in data:
                one = i.split("#")
                if one[0] == '1' and one[1] == '1':
                    Q1 += 1
                    Q1_list.append(one)
                if "3" in one:
                    Q2 += 1
                    Q2_list.append(one)
                if "0" in one:
                    one_copy = one.copy()
                    zero_index = Find_index(one, "0")
                    one_copy.pop(zero_index)
                    if "0" not in one_copy:
                        Q3 += 1
                        Q3_list.append(one)
                if one[1] == "0":
                    Q4 += 1
                    Q4_list.append(one)
    
            print(Q1_list)
            print(Q1)
            print(Q2_list)
            print(Q2)
            print(Q3_list)
            print(Q3)
            print(Q4_list)
            print(Q4)
    
    

    ```
    全集之所以为56 根据下图所得:

    img

    最终答案:
    有5封信投入4个信箱,求下列事件的概率
    1)第一,二号邮箱各投入一封信 4/56
    2)有一个信箱有三封信 24/56
    3)仅有一个信箱没有信 24/56
    4)第二个信箱没有信 21/56

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

问题事件

  • 已采纳回答 10月14日

悬赏问题

  • ¥20 怎么用dlib库的算法识别小麦病虫害
  • ¥15 华为ensp模拟器中S5700交换机在配置过程中老是反复重启
  • ¥15 java写代码遇到问题,求帮助
  • ¥15 uniapp uview http 如何实现统一的请求异常信息提示?
  • ¥15 有了解d3和topogram.js库的吗?有偿请教
  • ¥100 任意维数的K均值聚类
  • ¥15 stamps做sbas-insar,时序沉降图怎么画
  • ¥15 买了个传感器,根据商家发的代码和步骤使用但是代码报错了不会改,有没有人可以看看
  • ¥15 关于#Java#的问题,如何解决?
  • ¥15 加热介质是液体,换热器壳侧导热系数和总的导热系数怎么算