这可能是一个愚蠢的问题,但我真的很纠结这个概念。我正在阅读一个解释数组和 rand() 函数的教程。我有两个问题。
第一个是,显然要模拟一个骰子,我们需要从 1-6 随机生成一个数字。这本书暗示了这一点:
int RollOne( void ) {
return (rand() % 6) + 1;
}
对,rand() 可以生成 0-32767 之间的任何数字。然后我们找到这个数除以 6 的余数,然后加 1。例如 3245 是随机生成的。我们将它除以 6,得到 540.8333 并取余数。8.333(我相信截断为 8)然后加 1。除非我要发疯,否则就是 9,它不在 1-6 之间。该程序运行良好,但是我无法理解我们如何使用该代码从 1-6 获得一个数字!任何帮助将不胜感激。
我遇到的第二个问题并不那么重要,但很重要。这本书省略了这段代码的含义:
srand( clock() );
所有提到的是 srand() 使用由 clock() 提供的种子初始化一个随机数生成器。对了,现在我们真的可以在clock()中输入任何东西吗,如果可以的话,它的作用是什么?只需稍微解释一下 srand(clock()) 的作用就可以了。
抱歉发了这么长的帖子,我希望你不介意墙上的文字。任何帮助将非常感激。
谢谢,迈克
回答
谢谢大家:我知道我在做什么。如你们所示, % 运算符不除,它只是找到最高倍数与操作数之间的差异。知道了!我的印象是余数意味着小数。即如果 7/2 = 3.5,则余数为 0.5。现在我写出来了,我知道我有多愚蠢。很高兴我的 A-level 数学很重要.....
再次感谢!