在开始前我有一些资料,是我根据自己从业十年经验,熬夜搞了几个通宵,精心整理了一份「C语言的资料从专业入门到高级教程+工具包」,点个关注,全部无偿共享给大家!!!
在评论区回复“888”之后私信回复“888”,即可拿走。
现在一共有十个事件,每个事件发生的概率分别为0.752,0.762,0.349,0.571,0.322,0.323,0.714,1.000,0.633,0.789。请计算其中有0-10个事件发生的概率分别是多少?
这个我感觉主要有3种解法哈。
第一种就是写10个for循环嵌套,每个for循环可以用0和1枚举当前事件是否发生,在最每层循环内就可以确定每个事件是否发生,以及相应的概率。但是比较繁琐不灵活,适用于事件数量不多的情况。
第二种就是递归,上面有位回答的同学已经给出代码了,大概思想就是每次处理当前事件,根据是否发生分两种情况,然后再递归调用去处理下一个事件,同时记录事件发生数目和累计概率。
第三种是循环,需要一些bitmask基础哈。就是用一个循环
for(int x = 0; x < (1 << 10); x++)
其中x要按照二进制来看,而且要看它的最低10个bit位,如果第k个bit位是1表示第k个事件发生,否则不发生。然后就可以确定每个事件是否发生了,以及对应的概率。