rand() %(n-1) 하면 0~n까지의 난수가 만들어지잖아
난 이원리가 궁금한데 어디서 줏어들은걸로는 % 즉 나머지연산자를 통해서 저 연산을 하는거라고 알고있거든
근대 rand()%2 하면 32767을 2로 나눈 나머지니까 0~1이구나 이렇게 이해가가거든
근데 rand()%5 하면 32767을 5로 나눈 나머지는 2인데 어떻게 0~4의 난수가 나오는거야?
진짜궁금함 누가해결좀
난 이원리가 궁금한데 어디서 줏어들은걸로는 % 즉 나머지연산자를 통해서 저 연산을 하는거라고 알고있거든
근대 rand()%2 하면 32767을 2로 나눈 나머지니까 0~1이구나 이렇게 이해가가거든
근데 rand()%5 하면 32767을 5로 나눈 나머지는 2인데 어떻게 0~4의 난수가 나오는거야?
진짜궁금함 누가해결좀
시간이 해결해줄꺼야
울집에 피자 사주면 알려줌
랜덤돌릴때마다 바뀜 다만 그냥 랜드의 경우에는 같은 시드를 돌기때문에 프로그램을 끄고 다시하면 똑같은 난수가 나옴
rand()의 결과는 랜덤임. 정수범위 전체(21억?)의 경우의 수를 다섯가지로 묶는다고 생각하면 됨
예를들면 1 2 3 4 5 이런식으로 정해져잇는데 랜드 돌면 처음거 또 돌리면 그다음거 이렇게
답변해줘서고마운데 왜이해가안돼지.. 내가궁금한건 %(나머지연산자)로 결과값을 제한할때의 원리가 궁금함
time.h 넣고 srand(time(NULL)); 하면 랜덤 바뀝니다
rand()%5 하면 32767을 5로 나눈 나머지는 2인데 <<<<<<<<<<<< 이부분이 잘못되신듯 rand()하면 32767이 아니라 뭐가나올지 모르는거고 뭐가나올지 모르는 수를 5로 나누면 나머지는 0~4
%5 라고할때 나오는 값은 결국 01234 중 하나겟지
나머지연산의 정의를 보셈
아하 무슨소린지알겠다
난수가 32767이 나왓다면 5로 나눠서 나머지값은 2니까 2가 나오는거고
그러니까 일단 rand()에서 0~32767사이에서 값이나오니까 이중에서 아무거나 잡고
예를들어 5로 나눈다면 0,1,2,3,4중에서 나올거라는말이구나
이해됬음 ㄳㄳㄳㄳ
이해한게 맞긴 맞는데 그놈의 32767은 어디서 나온 숫자죠
int 라 -32768~32767 이거아님
아닌가?
아 아니다 내가 무슨소리하는거지
rand()하면 0부터 RAND_MAX 그러니까 32767까지 나온다고 알고있었는데.. 내가잘못알고있는거야?
맞아요 댓글을 제대로 못봤네요 죄송ㅎㅎ;; 본문에서 자꾸 32767 가정하길래요