欢迎光临散文网 会员登陆 & 注册

C++ 学习笔记

2023-06-07 16:14 作者:焚香落烬  | 我要投稿

第一个,取幂次函数和取arctan函数

左边是代码,右边是输出

atan函数只能计算整数的,

C++按照文件路径读取文件时,路径符号需要两个\\


C++代码随机数生成

使用C++自带的库<random>头文件生成随机数


#include <iostream>

#include <random>

using namespace std;


const int M = 10000; //continue 跳过本次循环,执行下次循环   &取地址

//单个数组的大小不能超过十万,一次给的内存不超过2M,会爆

double RanNum[M];


int main()

{

//int seed = 10;

time_t wt1;

wt1 = time(NULL);

int seed = wt1 % 10000; //根据程序运行的时间得到种子序号

default_random_engine gen(seed); //这是传入的随机数生成器,括号里是种子

normal_distribution  <> dis(0, 1); //随机数分布器,均值、方差

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; //输出随机数,一般觉得长,就不输出了

}

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;

}


这个代码可以生成不同分布的随机数,能指定均值与方差,需要事先指定随机数种子

这里面的种子是通过代码运行时间计算的,只要代码不是同时运行,基本不会生成相同的种子

另一种方法生成随机数,需要调用boost库,这个库需要自己装

装上库之后,代码头文件加这个:

#include <boost/random.hpp>

#include <boost/random/normal_distribution.hpp>

代码里:

boost::mt19937 rng(seed); //这是传入的随机数生成器,括号里是种子

boost::normal_distribution<> dis(0.0, 1.0); //需要传入一个随机数生成器

for (int ii = 0; ii < =M; ii++)

rannum[ii] = dis(rng); //将随机数输入到准备好的矩阵中

这是另一种方法,不清楚这俩有啥区别


C++ 学习笔记的评论 (共 条)

分享到微博请遵守国家法律