在[0,1)C 之间生成一个随机数
Generating a random number between [0,1) c++
我正在尝试生成一个随机数,该数字均匀分布在[0,1(之间,并且我尝试了Surifter_Real_distribution,但我不知道该如何工作。我在下面有此代码,但每次都会在接近相同的数字上生成〜.456
void RandomNumber()
{
srand(time(0));
double number=(double)rand()/((double)RAND_MAX+1);
cout<<"RANDOM NUMBER: "<<number<<endl;
}
-
不要使用rand,这是一个差的随机数生成器
-
每次调用发电机时不要重置种子
-
使用C 11。更清晰,可移植和易于维护
std::random_device rd; std::mt19937 gen(rd()); std::uniform_real_distribution<> dis(0, 1);//uniform distribution between 0 and 1 for (int n = 0; n < 10; ++n) { std::cout << dis(gen) << ' '; }
您每次生成随机数时重置随机发电机的种子,这意味着,如果您尝试在短时间内重复生成数字,您可能会得到相同的结果由于std::time()
仅准确到一秒钟。
您应该在程序开始期间一次致电std::srand()
,或者更好的是使用std::uniform_real_distribution
。如果您对<random>
库的工作方式感到困惑,请查看此信息。
相关文章:
- 如何在 c++ 中从数组中选择一个随机数?
- 创建一个带有随机数的向量
- 从大范围内生成一个随机数,但从大范围的中间开始生成较小的范围
- 如何在C++中创建数字列表,以便它可以选择一个随机数?
- 我在一个生成随机数的程序工作,我想将这些数字存储在一个数组中
- C++11 中的随机数:有没有一种简单的方法可以将生成器种子放在代码的一个位置,然后在不同的函数中使用它?
- 当尝试从 c++ 的文本文件中读取时,它会给我一个大的随机数
- 在随机数组中找到一个特定数字
- 在[0,1)C 之间生成一个随机数
- 在 Xcode 8.3 上构建一个C++正态分布式随机数生成器
- 在此过程中的纸牌游戏程序.不知道为什么我会得到一个随机数-858993460
- 为什么递增指针会给出一个随机数,而不是内存地址
- 如何使用Linux GetRandom系统调用来在范围内生成一个随机数
- 一个简单的程序来对随机数进行排序
- 如何在c++中生成一个介于1和16之间的随机数
- 生成一个小于4位的随机数,但其具有1、2或3位数字的概率相等
- visual如何在C++中创建一个随机数数组
- 从一个特定的范围中生成一定数量的唯一随机数
- 生成一个没有重复数字的随机数
- 生成一个没有重复的伪随机数和一个字母