rand()로 로또프로그램을 짰는데 숫자가 다 똑같이 나와요ㅜㅜ
하양이
2023.04.01
이제 막 배열 배우고있는 학생입니다. rand() 함수 써서 임의의수가 나오게 하는 프로그래밍인데여(중복상관X)
밑에는 소스구여 컴파일 하면 같은 숫자만 6개 나오는데 왜그런거죠?
#include stdlib.h
#include stdio.h
#include time.h
int main()
{
int lotto[6];
int n;
for (n=0; n6; n++)
{
srand(time(NULL));
lotto[n] = rand() % 45+1;
}
for (n=0; n6; n++)
printf(%6d %6d\n, n+1, lotto[n]);
return 0;
}
-
김자영
srand 함수를 for문 위로 올리세요.
for문이 너무 빨리 돌기 때문에 time 함수가 미쳐 다른 값을 반환하지 못하고,
srand 함수로 rand 함수를 계속 똑 같은 값으로 초기화하기 때문입니다. -
이솔
감사합니닿ㅎㅎ낼컴터로해바야겟네영
-
달콤이
rand함수는 어떠한 숫자를 기준으로 매우복잡한 공식을통하여 난수 흉내를 냅니다. 따라서 그 기준이되는 숫자를 바꿔주면 다르게 나옵니다. 그러한 함수가 srand이고 일반적으로 srand(time(NULL)); 이런식으로 사용합니다.time함수는 시간을 리턴해주는 함수로 시간은 지속적으로 변하니 계속해서 기준이되는 숫자가 변하고 따라서 완전한 난수처럼 보이게됩니다. time 함수는 time.h해더에 선언되어 있습니다.