具体实现过程见substitution of int from 1 to n
随机数算法知识:
kitty的随机数算法博客;
蒙特卡洛法:统计实验法,大量模拟求概率,用于不可解析函数,或概率分布,的模拟与计算时
将所求解的问题同一定的概率模型相联系,用电子计算机实现统计模拟或抽样,以获得问题的近似解
蒙特卡罗方法解题过程的主要步骤:
a.针对实际问题建立一个简单且便于实现的概率统计模型,使所求的量恰好是该模型的概率分布或数字特征。
b.对模型的随机变量建立抽样方法,在计算机上进行模拟测试,抽取足够多的随机数。
c.对模拟实验结果进行统计分析,给出所求解的“估计”。
d.必要时,改进模型以提高估计精度和减少实验费用,提高模拟效率。
需要随机数产生技术支持,
随机数产生方法:
0~1,乘同余和混合同余,和一种更复杂的——借助0~1分段,离散型随机变量的模拟——连续型随机变量的模拟,逆变换法,舍选法——
c语言中产生随机数:rand函数,srand函数(利用time提供的值为rand设置种子),time函数
随机变量的概率分布函数:
概率分布函数是概率论的基本概念之一。在实际问题中,常常要研究一个随机变量ξ取值小于某一数值x的概率,这概率是x的函数,称这种函数为随机变量ξ的分布函数,简称分布函数,记作F(x),即F(x)=P(ξ<x) (-∞<x<+∞),由它并可以决定随机变量落入任何范围内的概率。
语言知识:
rand,srand,time组合使用产生符合不同要求的随机数
used辅助数组,像bool值一样,可以优化一些避免重复的对比过程
swap函数,传递指针,temp变量
数组文字
如果要使用5,可以直接用5,也可以把5赋给一个变量后使用变量
复合文字就相当于数据5,作为一个常量使用,任何可以使用数组常量的地方都可以使用数组文字,例如给函数传递一个数组参数时
初始化一个命名数组可以省略数组大小,编译器会自动计算元素数目
初始化一个数组文字也可以省略数组大小
圆括号扩起来的类型名紧跟初始化列表,没名称不可引用,必须在创建的时候使用,值和相应类型的数组值相同,为一个地址