VS2017 C语言随机数问题

moonSeazz 2019-03-05 08:12:20

#include "pch.h"
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#define N 100
struct date
{
int year, month, day;
};
int main()
{
int i1, i2, i3, a, b, c = 0;
int ping[12] = { 31,28,31,30,31,30,31,31,30,31,30,31 }, run[12] = { 31,29,31,30,31,30,31,31,30,31,30,31 };
int s1[3][N] = {}, s2[12][N] = {}, s3[31][N] = {};
struct date s[N];
srand(time(NULL));
for (i1 = 0; i1 < N; i1++)
{
b = 0;
s[i1].year = rand() % 3 + 1999;
if (s[i1].year == 2000)
{
a = rand() % 366 + 1;
while (1)
{
if (a <= run[b])
break;
b++;
a -= run[b];
}
s[i1].month = b + 1;
s[i1].day = a;
}
else
{
a = rand() % 365 + 1;
while (1)
{
if (a <= ping[b])
break;
b++;
a -= run[b];
}
s[i1].month = b + 1;
s[i1].day = a;
}
}
for (i2 = 0; i2 < N; i2++)
{
s1[s[i2].year - 1999][i2] = 1;
s2[s[i2].month - 1][i2] = 1;
for (i3 = 0; i3 < i2; i3++)
{
if (s3[s[i2].day - 1][i3] == 1)
{
if (s1[s[i2].year - 1999][i3] == 1 && s2[s[i2].month - 1][i3] == 1)
c++;
}
}
s3[s[i2].day - 1][i2] = 1;
}
printf("%d", c);
return 0;
}
先随机生成N个出生年月日信息,再进行判断有多少对生日相同的人。
问题是有时候能成功运行有时候不能,调试发现生成了值为1的year。大神看看这是怎么回事?
...全文
271 1 打赏 收藏 转发到动态 举报
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复
可能是rand()的问题,先另外保存rand()的值,再计算year,调试的时候两个同时输出,看看year等于1的时候rand()有没有出错

69,382

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧