2013-02-18 123 views
0

因此,我使用模数和rand作为我正在编写的函数的一部分。现在,我明白了:与rand运算符有关的计算

rand() % 6 + 1;在这种情况下给我一个介于一到六之间的随机数。不过,我也知道,

rand();给了我一个随机值从0 - 32767和srand;改变序列

,但我以为,

% =不管的a其余是a/b后。

......所以,如果你打破rand() % 6 + 1;,它会是什么样子?

我需要做的这个意义上说为了我好,因为我看rand() % 6 + 1;这样的:

一些随机数/ 6 =余从随机遗留下来的。然后添加一个。

所以,我的问题是双重的:

1 - 如何rand()得到仅仅限于1 - 5突然而不是数字,从0谱 - 32767?

2 - 这些数字(1-5)除以6中的任何一个都会给出一个小数,而不是整数,我认为模数仅适用于整数。我在这里错过了什么信息?

正如你所看到的,我对此感到困惑。帮助总是赞赏:)

回答

0

rand()%6给出生成的随机数的所述提醒时由6

划分例如,如果rand()产生数100,则100%的6的结果是,当100是所获得的催除以6即为4.因此,无论从函数rand()生成的数字是多少,当完成%6时,输出将在0-5之间(提醒除以6)。

“rand()如何突然被限制在1 - 5而不是从0 - 32767的数字范围?”

rand()没有被限制为“0-5”,它仍然输出0 - 32767(或任何不知道最大限制)的数字。但是当我们做rand()%6时,输出将在0-5范围内

+0

谢谢!我想我只是好奇它将如何发挥,如果随机数是1.因为1/6 = 0.16那么会发生什么呢? – Jason 2013-02-18 06:28:46

+0

如果rand()产生1,那么1%6是1.因为如果你用1除6,你将得到0作为商和1作为提醒。 – 2013-02-18 06:48:27