一个范围内的成功随机数
Succesive random numbers in a range
我有以下代码:
#include <iostream>
#include <cstdlib>
#include <ctime>
int getRandomNumber(int min,int max)
{
static const double fraction = 1.0/(static_cast<double>(RAND_MAX)+1.0);
return static_cast<int>(rand()*fraction*(max-min+1)+min);
}
int main()
{
srand(static_cast<int>(time(0)));
std::cout<<getRandomNumber(1,6);
return 0;
}
如果我成功运行此程序,则得到相同的数字。但是当我使用 cout 语句运行这个时:
std::cout<<getRandomNumber(1,6)<<getRandomNumber(1,6);
我每次都得到不同的数字。这怎么可能呢?我错过了什么吗?
time()
函数以秒为单位返回时间,因此在同一秒内运行程序两次或更多次将导致随机数系统以完全相同的数字播种。
当使用函数 time() 作为种子并在短间隔内运行程序时,与 RAND_MAX 相比,rand() 的第一个结果将更改非常小的数量。
这就解释了为什么当使用分数得到 1 - 6 之间的数字时,你会得到相同的数字。
这是另一种从 1 到 6 获取随机数的方法,这可能会做得更好。
rand() % 6 + 1
相关文章:
- 为什么随机数生成器不在void函数中随机化数字,而在main函数中随机化
- 整数不会重复超过随机数
- cmake在我的项目中所需的所有静态库都不成功
- 尽管测试成功,CppUnit测试核心仍被丢弃.为什么
- 如何让LLDB在成功时退出,在失败时等待
- if数组上的随机数
- 有没有办法知道Tracer是否成功地完全连接到了jaegerclientcpp中的jaeger后端服务器
- 在将数字随机生成为数组期间从内存输出随机数的数组
- 半随机数生成C++
- 程序在尝试猜测它选择的随机数时进入无限循环?
- CMake WxWidgets项目成功地在Linux上构建,但没有在Windows上构建
- 为什么 std::绑定错误参数可以成功?
- 有没有办法在 c++ 中同时生成随机数?如果没有,是否有解决方法?
- Clion显示错误,但可以使用Cmake成功构建代码
- 具有随机数的二维数组不会更改
- 代码使用向量成功运行,但使用数组显示错误
- 随机数未达到限制
- 如何检查cURL是否成功登录?c ++
- 我想生成许多矩阵并用随机数填充它
- 一个范围内的成功随机数