rand() 或 qrand() 函数生成一个随机整数。
int a= rand();
我想得到一个介于 0 和 1 之间的随机数。我该怎么做?
您可以将一个随机数生int
成为 a float
,然后将其除以RAND_MAX
,如下所示:
float a = rand(); // you can use qrand here
a /= RAND_MAX;
结果将在从零到一的范围内,包括端点。
检查这篇文章,它展示了如何将 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;
}
#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;
}
从定义精度的随机数中获取一个模块。然后进行类型转换以浮动并除以模块。
float randNum(){
int random = rand() % 1000;
float result = ((float) random) / 1000;
return result;
}