使用 C++ 的 1 到 10 之间的随机数
Random number between 1 to 10 using C++
此代码应该生成 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;
代码中出了什么问题?
如果你想要一个介于lowest
和highest
之间的随机整数,你最好写
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
之间的值。
相关文章:
- 查找彼此之间具有不同最小距离的随机数
- 使用 std::binomial_distribution 在范围之间生成随机数
- 如何在 C++ 中获取 5 到 -5 之间的随机数
- C++ 和 Python 实现之间的不同伪随机数
- 生成随机数,并保证在给定域之间覆盖所有
- 我如何确保我的随机数在兰德生成的0和1之间不是0
- 在[0,1)C 之间生成一个随机数
- 0-1之间的随机数生成以填充容器
- 盒子muller随机数在C 中的0到1之间
- 在random_device和seed_seq之间做出决定,为多个随机数序列生成种子
- C++ 中介于 0 和 1 之间的随机数
- 本应生成 2 个介于 1 和 9 之间的随机数的程序C++只生成 6 和 9 并且没有正确循环
- 在0到1之间生成随机数
- 分叉进程之间的随机数是相同的
- 如何在 c++ 中生成 0 到 4 之间的随机数
- 介于 2 个值之间的随机数
- 如何在我存储的两个变量之间生成随机数
- 使用 C++ 的 1 到 10 之间的随机数
- 如何在c++中生成一个介于1和16之间的随机数
- C++生成一个介于 0 和 100,000 之间的随机数