C++:高精度随机双精度数

Posted

技术标签:

【中文标题】C++:高精度随机双精度数【英文标题】:C++: High Precision Random Double Numbers 【发布时间】:2016-01-29 15:20:40 【问题描述】:

这是此页面上答案的后续问题:

How to generate random double numbers with high precision in C++?

#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 ;

答案很好,但我很难意识到如何将此代码的输出放在双变量中,而不是将其打印到stdout。有人可以帮忙吗?

谢谢。

【问题讨论】:

你试过some_variable = dist(e2);吗? 如果我只运行“double var = dist(e2);”它只给出 6 位数字... 那么你应该在问题中表明这一点。现在还不清楚你在问什么。 hmm... 变量是否仍然包含其余数字,而 std::setprecision(10) 只是设置 std::cout 打印多少? 【参考方案1】:

您对 实际 精度和 显示 精度感到困惑 - 试试这个:

#include <iostream>
#include <random>
#include <iomanip>    

int main()

    std::random_device rd;
    std::mt19937 e2(rd());
    std::uniform_real_distribution<> dist(1, 10);

    double v = dist(e2);   // get a random double at full precision

    std::cout << std::fixed << std::setprecision(10) << v << std::endl;
                           // display random double with 10 digits of precision
    return 0;

【讨论】:

是的,我对此有点困惑,认为变量包含的内容取决于 setprecision 函数。谢谢 没问题 - 这是一个常见的混淆来源。 @PaulR 我也有类似的问题here。如果可能的话,你能帮帮我吗。

以上是关于C++:高精度随机双精度数的主要内容,如果未能解决你的问题,请参考以下文章

如何在 C++ 中的同一函数中使用字符串和双精度数

如何从c ++中的文件中读取双精度

将双精度转换为字符数组 C++

单精度、双精度各有几位小数?

比较c ++中的两个浮点数/双精度数[重复]

使用intel内在函数加载内存中等距的双精度数?