gpt4 book ai didi

c++ - 每次模拟正态分布都是一样的(C++)

转载 作者:行者123 更新时间:2023-11-27 23:07:07 25 4
gpt4 key购买 nike

我用 C++ 编写代码来模拟正态分布。但每次似乎结果都是一样的。我的问题是这种现象的原因是什么以及如何解决?我从来没有用 Python 遇到过这个问题。非常感谢任何引用。

// Simulation.cpp : Defines the entry point for the console application.
#include "stdafx.h"
#include <iostream>
#include<random>

void main(){

// create default engine as source of randomness
// The maxtime we do expriements is 10000
// Record to the sum of the maxtimes sample
std::default_random_engine dre;
const int maxtimes = 10000;
double sum = 0.0 ;
// Generate the normal distribution witn mean 0 and variaiton 1.
std::normal_distribution<double> distribution(0.0, 1.0);
// Output the result and Record their sum.
for( int i=0; i<maxtimes; ++i)
{

double x = distribution(dre);
std::cout << x << ":";
sum +=x;
x =0.0;
}
std::cout<<std::endl;
std::cout <<" The average sum is: " << sum/10000 <<std::endl;
}

我的代码在 Visual C++ 2010 中运行。

最佳答案

你每次都从同一个种子构建default_random_engine:因为你没有给它一个种子来构建,它只是使用默认值,每次运行都是一样的,所以每次运行都会得到相同的“随机”数字。 http://www.cplusplus.com/reference/random/linear_congruential_engine/linear_congruential_engine/

使用random_device为发电机播种。

std::default_random_engine dre(std::random_device()()); 

关于c++ - 每次模拟正态分布都是一样的(C++),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22921853/

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