gpt4 book ai didi

c++ - 使用 boost::random 库获取整数随机值而不是实际值

转载 作者:搜寻专家 更新时间:2023-10-31 01:53:16 24 4
gpt4 key购买 nike

我正在尝试使用 boost::random 库获取真正的随机值。这是我的代码:

#include <iostream>

#include <boost/random/uniform_real_distribution.hpp>
#include <boost/random/mersenne_twister.hpp>

boost::random::mt19937 eng = boost::random::mt19937();
boost::random::uniform_real_distribution<double> urd =
boost::random::uniform_real_distribution<double>(0,20);

for (int i = 0; i <= 100; i++)
std::cout << urd(eng) << std::endl;

但我得到 0 到 20 之间的整数。

我该怎么办?

我还尝试了另一个引擎:

#include <iostream>

#include <boost/random/uniform_real_distribution.hpp>
#include <boost/random/lagged_fibonacci.hpp>

boost::random::lagged_fibonacci607 eng = boost::random::lagged_fibonacci607();
boost::random::uniform_real_distribution<double> urd =
boost::random::uniform_real_distribution<double>(0,20);

for (int i = 0; i <= 100; i++)
std::cout << urd(eng) << std::endl;

但没有...(总是整数值)

最佳答案

在输出之前设置精度如何? std::cout.precision(15);?

或者使用:

std::cout.precision(std::numeric_limits<double>::digits10);

示例

#include <iostream>
#include <limits>
#include <boost/random/uniform_real_distribution.hpp>
#include <boost/random/mersenne_twister.hpp>

int main()
{
boost::random::mt19937 eng = boost::random::mt19937();
boost::random::uniform_real_distribution<double> urd =
boost::random::uniform_real_distribution<double>(0,20);

std::cout.precision(std::numeric_limits<double>::digits10);
for (int i = 0; i <= 100; i++)
{
std::cout << urd(eng) << std::endl;
}
}

std::cout 的默认精度设置为 6,因此它应该可以在不设置它的情况下工作,但是......

关于c++ - 使用 boost::random 库获取整数随机值而不是实际值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11404693/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com