rand()或qrand()函数生成一个随机的int。
int a= rand();
我想得到0到1之间的随机数。 我怎么做这个工作?
答案 0 :(得分:8)
您可以在int
中生成随机float
,然后将其除以RAND_MAX
,如下所示:
float a = rand(); // you can use qrand here
a /= RAND_MAX;
结果将在零到一的范围内,包括在内。
答案 1 :(得分:6)
使用C ++ 11,您可以执行以下操作:
包括随机标题:
#include<random>
定义PRNG和分布:
std::default_random_engine generator;
std::uniform_real_distribution<double> distribution(0.0,1.0);
获取随机数
double number = distribution(generator);
在this page和this page中,您可以找到有关uniform_real_distribution
的一些参考资料。
答案 2 :(得分:2)
#include <iostream>
#include <ctime>
using namespace std;
//
// Generate a random number between 0 and 1
// return a uniform number in [0,1].
inline double unifRand()
{
return rand() / double(RAND_MAX);
}
// Reset the random number generator with the system clock.
inline void seed()
{
srand(time(0));
}
int main()
{
seed();
for (int i = 0; i < 20; ++i)
{
cout << unifRand() << endl;
}
return 0;
}
答案 3 :(得分:2)
检查this帖子,它显示了如何使用qrand作为你的目的,这是一个围绕rand()的线程安全包装。
#include <QGlobal.h>
#include <QTime>
int QMyClass::randInt(int low, int high)
{
// Random number between low and high
return qrand() % ((high + 1) - low) + low;
}
答案 4 :(得分:1)
从随机数中取一个模块来定义精度。然后做一个类型转换浮动并除以模块。
float randNum(){
int random = rand() % 1000;
float result = ((float) random) / 1000;
return result;
}