난수출력하기
터1프한렩
10이상 100이하 중에서 3의배수가 난수로 출력되게하기.가 문제였습니다.12~99사이 3의 배수이므로이걸 3을 나누면4~33입니다. 결국 4~33을 범위로하여 난수를 뽑아내고 거기에 3을 곱하면 제가원하는 10이상 100이하 중에서 3의 배수를 뽑아낼수있습니다.========================제가 작성한 코드=======================#include stdio.h
#include stdlib.h
#define RND_MAX 33
#define RND_MIN 4 int main(void)
{
int i;
unsigned int seed;int diff=RND_MAX-RND_MIN; //29입니다.printf(씨앗을 입력하세요 ; );
scanf(%u,&seed); //씨앗을 받아서
srand(seed); //씨앗을 심는다.printf(씨앗 %u의 열매는 : ,seed);for(i=0;i5;i++) //5개만 출력해보기.
{
printf(%d ,3*((rand()/(double)RAND_MAX)*diff+RND_MIN));
}return 0;
}===========================================rand()/(double)RAND_MAX에서 0~1사이의 난수가 구해지고,diff즉 29를곱해서 0~29사이의 난수가됩니다. 거기에 RND_MIN 즉 4를 더해주면 4~33사이의 수가됩니다. 결론적으로 출력되는것은 12~99가 됩니다. 근데 이렇게해서 될것같앗는데 실행해보면 이상한 -1266578298989 막 이런값이 출력이됩니다.ㅠㅠ 뭐가틀린걸까요
-
우시
%d대신 %lf로 해보세요