gpt4 book ai didi

c++ - 如何通过 boost 获得 0.5 增量的随机数?

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

如果我有这样的代码,请在 boost 的网站上使用这个基本的 boost 示例:

#include <boost/random/mersenne_twister.hpp>
#include <boost/random/variate_generator.hpp>
#include <boost/random/uniform_real.hpp>

boost::mt19937 gen;

int roll_die() {
boost::uniform_real<> dist(1, 6);
boost::variate_generator<boost::mt19937&, boost::uniform_real<> > die(gen, dist);
return die();
}

如果我想做类似的事情

boost::uniform_real<> dist(0.0, 6.0) 

例如,它给我类似 1.4883 的值。有没有办法让它只给我 0.5 的值增量。

示例:(0.0, 6.0)

如果我运行代码 6 次,它会给我这样的结果: 0.5, 1.5, 5.5, 6.0, 3.5, 3.0

我怎样才能做到这一点?

谢谢。

最佳答案

有两种方法:

简单的方法是从两倍范围(闭范围[0, 12])中得到一个随机整数并除以 2.0。

更困难的方法是从扩展一半单位的范围(开放范围 (-0.25, 6.25))中获取随机实数并四舍五入到最接近的 0.5。

后者更难,因为您经常会猜错范围,而且很难编写测试来确保您猜对了。 (事实上​​ ,我并不是绝对肯定正确的范围是 (-0.25, 6.25) 而不是 [-0.25, 6.25) ,至少对于 IEEE float ...... ,如果那个 是正确的范围,boost::random::uniform_real_distribution 不会给你任何方法来获得它......)

关于c++ - 如何通过 boost 获得 0.5 增量的随机数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13277053/

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