使用 C++ 的 1 到 10 之间的随机数

Random number between 1 to 10 using C++

本文关键字:之间 随机数 C++ 使用      更新时间:2023-10-16

此代码应该生成 1 到 10 之间的随机数,但它每次都返回 1。

int random_integer;
int lowest=1, highest=10;
int range=(highest-lowest)+1;
random_integer = lowest + int(range*rand()/(RAND_MAX + 1.0));
cout << random_integer << endl;

代码中出了什么问题?

如果你想要一个介于lowesthighest之间的随机整数,你最好写

random_integer = lowest + rand() % range

你在这里会溢出 - range*rand() .

只需使用普通人使用的内容:rand() % 10 + 1

range * rand() / (RAND_MAX + 1.0)

不做你想的那样。介绍一些参数:

range * (rand() / (RAND_MAX + 1.0))

(请注意,此方法给出了偏态分布。

我同意上面提供的所有解决方案.
现在,要在每次运行程序时获得不同的序列,您可以使用srand()函数,它将为rand()函数提供一个种子,如下所示:

srand(time(NULL))  
random_integer = lowest + rand() % range 

这两个始终是我程序的一部分

float randf(float lo, float hi) {
    float random = ((float) rand()) / (float) RAND_MAX;
    float diff = hi - lo;
    float r = random * diff;
    return lo + r;
}
int randi(int lo, int hi)
{
    int n = hi - lo + 1;
    int i = rand() % n;
    if (i < 0) i = -i;
    return lo + i;
}

您似乎假设rand()返回一个介于 0 和 1 之间的值。

这是不正确的,它返回 0 到 RAND_MAX 之间的值。