📅  最后修改于: 2023-12-03 15:27:08.726000             🧑  作者: Mango
在程序开发过程中,经常需要生成随机双,本文将为程序员介绍如何在C++中生成随机双。
在了解如何生成随机双之前,需要掌握以下知识点:
生成随机双的方法有很多,这里介绍两种常见的方法。
c++标准库提供的rand()函数可以生成随机数,但是生成的随机数都是整数。要生成随机双,可以使用如下方法:
#include <iostream>
#include <cstdlib>
#include <ctime>
using namespace std;
double rand_double() {
int a = rand();
int b = rand();
int c = a^b;
return *((double*)&c);
}
int main() {
srand(time(0));
double random_double = rand_double();
cout << "Random double: " << random_double << endl;
return 0;
}
代码解释:
C++11标准引入了新的随机数生成器,标准库中的std::mt19937就是一个很好的例子。std::mt19937是一个基于梅森旋转算法的随机数生成器,具有良好的统计特性。使用std::mt19937可以直接生成随机双。
#include <iostream>
#include <random>
using namespace std;
double rand_double() {
random_device rd;
mt19937 gen(rd());
uniform_real_distribution<> dis(0, 1);
return dis(gen);
}
int main() {
double random_double = rand_double();
cout << "Random double: " << random_double << endl;
return 0;
}
代码解释:
本文介绍了两种在C++中生成随机双的方法,其中第二种是C++11标准推荐的方法,具有更好的随机数统计特性。在实际应用中,应该选择合适的生成方法,以确保生成的随机数满足实际需求。