C语言统计算法的问题

假设班里人数N=35,又生日在一年的365天等概率分布。问至少两人同一天生日的概率有多大?试编程序模拟。
算法思路:使用选票统计算法 求解
不知道出了什么问题 算不出来 同一天生日的人数 以及概率

img

birthsame中判断同一天的逻辑不对,因为是求至少两人同一天生日,所以最好求没有相同生日的概率,用100减去这个概率就是要求的结果。
而且,x[]中存储的是35给人的生日所在的天,应该用双层for循环来判定这35给人是否有重复生日的。
birthsame函数及main函数中printf修改如下:


int birthsame(int x[])
{
    //找出没有相同生日的人数
    int i = 0, count = 0, j = 0;
    for(i=0;i<N;i++)
    {
        for (j = i + 1; j < N; j++)
        {
            if (x[j] == x[i])
                break;
        }
        if (j == N) //说明没有重复的
            count++;
    }
    return count;
}

int main()
{
    //原来的代码

    //printf修改如下
    printf("%.2f%%\n", 100.0 - 100.0 * m / n);
    return 0;
}

你这思路不对啊,x数组大小应该定义为365,int x[365]= {0};
然后birthgen函数中,循环35次给35名学生产生生日
for(i=0;i<35;i++)
x[rand()%365]++;
这样birthsame函数才成立

思路:

img

您好,我是有问必答小助手,您的问题已经有小伙伴帮您解答,感谢您对有问必答的支持与关注!
PS:问答VIP年卡 【限时加赠:IT技术图书免费领】,了解详情>>> https://vip.csdn.net/askvip?utm_source=1146287632