第一个,取幂次函数和取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);//将随机数输入到准备好的矩阵中
这是另一种方法,不清楚这俩有啥区别
关键词:
最新资讯