加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

c – 更改随机数发生器的参数

发布时间:2020-12-16 09:34:46 所属栏目:百科 来源:网络整理
导读:我使用boost :: random来生成随机速度值,我想改变响应用户输入的均值和方差. 我使用以下内容: typedef boost::mt19937 RNG;static RNG rng();typedef boost::normal_distributiondouble DIST;DIST dist_east(vel_e,sigma);DIST dist_north(vel_n,sigma);boo
我使用boost :: random来生成随机速度值,我想改变响应用户输入的均值和方差.

我使用以下内容:

typedef boost::mt19937 RNG;
static RNG rng();

typedef boost::normal_distribution<double> DIST;
DIST dist_east(vel_e,sigma);
DIST dist_north(vel_n,sigma);

boost::variate_generator<RNG,DIST> east(rng,dist_east);
boost::variate_generator<RNG,DIST> north(rng,dist_north);

velocity.east = east();
velocity.north = north();

我的问题是每次调用时我只从两个变量生成器返回一个值.当我改变v??el_e,vel_n或sigma时,值会改变,否则,我会得到相同的值.

我尝试将dist_east,dist_north,east和north对象设置为静态,但是在构造之后我无法更改参数.

有没有办法实现我想要的?

解决方法

在我看来,最快的方法是使用sigma 1和平均值0进行正态分布.这样,您可以从任何正态分布中获取值,只需乘以新的sigma并添加均值.

y = mean + sigma * x

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读