C++ 學(xué)習(xí)筆記
第一個(gè),取冪次函數(shù)和取arctan函數(shù)

atan函數(shù)只能計(jì)算整數(shù)的,
C++按照文件路徑讀取文件時(shí),路徑符號(hào)需要兩個(gè)\\
C++代碼隨機(jī)數(shù)生成
使用C++自帶的庫<random>頭文件生成隨機(jī)數(shù)
#include <iostream>
#include <random>
using namespace std;
const int M = 10000; //continue 跳過本次循環(huán),執(zhí)行下次循環(huán)? ?&取地址
//單個(gè)數(shù)組的大小不能超過十萬,一次給的內(nèi)存不超過2M,會(huì)爆
double RanNum[M];
int main()
{
//int seed = 10;
time_t wt1;
wt1 = time(NULL);
int seed = wt1 % 10000; //根據(jù)程序運(yùn)行的時(shí)間得到種子序號(hào)
default_random_engine gen(seed); //這是傳入的隨機(jī)數(shù)生成器,括號(hào)里是種子
normal_distribution? <> dis(0, 1); //隨機(jī)數(shù)分布器,均值、方差
double sum = 0;
double var = 0;
for (int i = 0; i < M ; i++)
{
RanNum[i] = dis(gen);
sum = sum + RanNum[i];
//cout << RanNum[i] << endl; //輸出隨機(jī)數(shù),一般覺得長(zhǎng),就不輸出了
}
double mean = sum / M; //均值
cout << "mean=" << mean << endl;
for (int i = 0; i < M; i++)
{
var = var + pow((RanNum[i] - mean), 2);
}
var = var / M; //方差
cout << "var=" << var << endl;
return 0;
}
這個(gè)代碼可以生成不同分布的隨機(jī)數(shù),能指定均值與方差,需要事先指定隨機(jī)數(shù)種子
這里面的種子是通過代碼運(yùn)行時(shí)間計(jì)算的,只要代碼不是同時(shí)運(yùn)行,基本不會(huì)生成相同的種子
另一種方法生成隨機(jī)數(shù),需要調(diào)用boost庫,這個(gè)庫需要自己裝
裝上庫之后,代碼頭文件加這個(gè):
#include <boost/random.hpp>
#include <boost/random/normal_distribution.hpp>
代碼里:
boost::mt19937 rng(seed); //這是傳入的隨機(jī)數(shù)生成器,括號(hào)里是種子
boost::normal_distribution<> dis(0.0, 1.0); //需要傳入一個(gè)隨機(jī)數(shù)生成器
for (int ii = 0; ii < =M; ii++)
rannum[ii] = dis(rng); //將隨機(jī)數(shù)輸入到準(zhǔn)備好的矩陣中
這是另一種方法,不清楚這倆有啥區(qū)別