编制一个产生均值为1,方差为4的高斯分布随机数程序,求最大值,最小值,均值和方差.555555
来源:学生作业帮助网 编辑:作业帮 时间:2024/11/06 03:55:12
编制一个产生均值为1,方差为4的高斯分布随机数程序,求最大值,最小值,均值和方差.555555
编制一个产生均值为1,方差为4的高斯分布随机数程序,求最大值,最小值,均值和方差.
555555
编制一个产生均值为1,方差为4的高斯分布随机数程序,求最大值,最小值,均值和方差.555555
分太少,算了,给你一个源程序吧,C++的boost库,你直接调用吧,这样就不用自己再写那个产生随机数的函数,使用这个函数产生你要求的样本,统计这个样本得到你后边的均值和方差,老师大概是想让你比较产生出来的值和你的理论值1和4有多少差别.
/* boost random/normal_distribution.hpp header file
*
* Copyright Jens Maurer 2000-2001
* Distributed under the Boost Software License,Version 1.0.(See
* accompanying file LICENSE_1_0.txt or copy at
*
* See http://www.boost.org for most recent version including documentation.
*
* $Id:normal_distribution.hpp,v 1.20 2004/07/27 03:43:32 dgregor Exp $
*
* Revision history
* 2001-02-18 moved to individual header files
*/
#ifndef BOOST_RANDOM_NORMAL_DISTRIBUTION_HPP
#define BOOST_RANDOM_NORMAL_DISTRIBUTION_HPP
#include
#include
#include
#include
#include
namespace boost {
// deterministic polar method,uses trigonometric functions
template
class normal_distribution
{
public:
typedef RealType input_type;
typedef RealType result_type;
#if !defined(BOOST_NO_LIMITS_COMPILE_TIME_CONSTANTS) && !(defined(BOOST_MSVC) && BOOST_MSVC = result_type(0));
}
// compiler-generated copy constructor is NOT fine,need to purge cache
normal_distribution(const normal_distribution& other)
:_mean(other._mean),_sigma(other._sigma),_valid(false)
{
}
// compiler-generated copy ctor and assignment operator are fine
RealType mean() const { return _mean; }
RealType sigma() const { return _sigma; }
void reset() { _valid = false; }
template
result_type operator()(Engine& eng)
{
#ifndef BOOST_NO_STDC_NAMESPACE
// allow for Koenig lookup
using std::sqrt; using std::log; using std::sin; using std::cos;
#endif
if(!_valid) {
_r1 = eng();
_r2 = eng();
_cached_rho = sqrt(-result_type(2) * log(result_type(1)-_r2));
_valid = true;
} else {
_valid = false;
}
// Can we have a boost::mathconst please?
const result_type pi = result_type(3.14159265358979323846);
return _cached_rho * (_valid
cos(result_type(2)*pi*_r1) :
sin(result_type(2)*pi*_r1))
* _sigma + _mean;
}
#if !defined(BOOST_NO_OPERATORS_IN_NAMESPACE) && !defined(BOOST_NO_MEMBER_TEMPLATE_FRIENDS)
template
friend std::basic_ostream&
operator> std::ws >> nd._valid >> std::ws >> nd._cached_rho
>> std::ws >> nd._r1;
return is;
}
#endif
private:
result_type _mean,_sigma;
result_type _r1,_r2,_cached_rho;
bool _valid;
};
} // namespace boost
#endif // BOOST_RANDOM_NORMAL_DISTRIBUTION_HPP
A=1+4*randn(m,n)%%%均值为1,方差为4的m*n个数组。