Cha*_*ame 4 c++ random precision
我正在尝试以高精度生成一系列双随机数。例如,0.856365621(十进制后有 9 位)。
我从互联网上找到了一些方法,但是,它们确实生成了双随机数,但是精度没有我要求的那么好(小数点后只有 6 位)。
因此,我可以知道如何实现我的目标吗?
在 C++11 中,您可以使用<random>标头,在这个特定示例中,使用std::uniform_real_distribution我能够生成多于6数字的随机数。为了查看设置将通过std::cout我们打印的位数,我们需要使用std::setprecision:
#include <iostream>
#include <random>
#include <iomanip>
int main()
{
std::random_device rd;
std::mt19937 e2(rd());
std::uniform_real_distribution<> dist(1, 10);
for( int i = 0 ; i < 10; ++i )
{
std::cout << std::fixed << std::setprecision(10) << dist(e2) << std::endl ;
}
return 0 ;
}
Run Code Online (Sandbox Code Playgroud)
您可以使用它std::numeric_limits::digits10来确定可用的精度。
std::cout << std::numeric_limits<double>::digits10 << std::endl;
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3107 次 |
| 最近记录: |