如何生成 1 到 3 之间的随机数? 使用这个函数我有时会得到 0(我只想有 1,2 或 3):
ziehen=rand() % 3 + 1;
为什么我必须在主程序中添加 srand(0) ? 我已经添加了
#include <stdlib.h>
#include <stdio.h>
#include <time.h>
去图书馆。这足够了还是我需要更多?
最佳答案
您绝对不能使用模数来减少 rand()
输出的周期性。原因?这是因为标准线性同余生成器的低阶位的随机性低于高阶位:模数会丢弃高阶位。
最好的办法是使用(3.0 * rand()/(RAND_MAX + 1.0)) + 1.0;
。通过将输出分配给整型来隐式将其转换为 int
。
RAND_MAX
由 C 标准定义,其值取决于实现
关于c - 1 到 3 之间的随机数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23127800/