c语言jam的随机数,c – 如何重置随机数引擎?

我试图用C11方法来随机数生成:

#include

#include

#include

int main(int argc, char *argv[])

{

std::normal_distribution normal(0, 1);

std::mt19937 engine; // Mersenne twister MT19937

auto generator = std::bind(normal, engine);

int size = 2;

engine.seed(0);

normal.reset();

for (int i = 0; i < size; ++i)

std::cout << generator() << std::endl;

std::cout << std::endl;

engine.seed(1);

normal.reset();

for (int i = 0; i < size; ++i)

std::cout << generator() << std::endl;

std::cout << std::endl;

engine.seed(0);

normal.reset();

for (int i = 0; i < size; ++i)

std::cout << generator() << std::endl;

return 0;

}

输出为:

0.13453

-0.146382

0.46065

-1.87138

0.163712

-0.214253

这意味着即使以相同的数字种子,第一和第三序列也不相同.请,我做错了什么?是个

std::normal_distribution

只是数学意义上的一个功能(x确定性地产生y)或者我是否缺少某些东西?如果它只是一个功能,那么重置方法实际上是做什么的?

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值