2013-02-18 2 views
0

그래서 저는 쓰고있는 함수의 일부로 모듈러스와 랜드를 사용하고 있습니다.rand 연산자를 사용한 계산

rand() % 6 + 1; 나에게 하나이 상황에서 여섯 사이의 임의의 숫자를 제공합니다 : 지금, 나는 이해합니다. 그러나 나는 또한

rand(); 0에서 나에게 임의의 값을주는 것을 알고있다 - 32767 및 srand; 시퀀스

을 변경하지만 난 ... a의 나머지 a/b 후 뭐든간에

%

을 = 생각했다. 당신이 rand() % 6 + 1;을 중단한다면

... 그래서, 그것은 무엇과 같을 것이다?

어떤 임의의 번호/6 = 나머지는 무작위에서 남은 :

은 내가 이런 식으로 rand() % 6 + 1;에 보이기 때문에 내 자신의 이익을 위해 이것의 의미를 확인해야합니다. 그런 다음 추가하십시오.

그래서, 내 질문은 두 배입니다 :

1-32767 - 대신 0에서 숫자의 스펙트럼 갑자기 5 모든 - 방법 단지 1에 제한받을 rand()는 무엇입니까?

2-6로 나눈 그 숫자 (1-5)의 상관 당신에게 분수, 전체가 아닌 하나를주고 내가 계수는 정수와 함께 작동 생각했다. 어떤 정보가 여기에 누락 되었습니까? 당신이 볼 수 있듯이

나는 이것에 대해 혼란 스러워요. 도움말 항상 알 수있다 :

답변

0

rand()%6 생성 난수의 알림을 제공 rand() 숫자 (100)를 생성하는 경우, 예를 들어 6

나눈 때, 100 % (6)의 결과 (100) 인 경우 얻어진 알려드립니다 6으로 나눈 값은 4입니다. 따라서 함수 rand()에서 숫자가 생성 되더라도 % 6이 완료되면 출력은 0-5 (6으로 나눌 때 알림)가됩니다.

"- 5 모든 대신 0에서 숫자의 스펙트럼 갑자기 - 방법 랜드() 단지 1로 제한됩니까? 32767"

랜드()가 제한되지 않습니다에 "0-5", 여전히 0에서 숫자를 출력 - 32767 (또는 무엇이든은 최대 한계를 모른다). 하지만 rand() % 6을 수행하면 출력은 0-5 범위에있게됩니다.

+0

고마워요! 나는 난수가 1 인 경우 어떻게 재생 될지 궁금해했다. 1/6 = 0.16 이후로 어떻게 될까? – Jason

+0

rand()가 1을 생성하면 1 % 6은 1입니다. 1을 6으로 나누면 지수는 0이되고 미리 알림은 1이됩니다. –