从伪随机数的产生到高大上的蒙特卡洛算法(C语言实现)

本文介绍了如何在C语言中生成伪随机数,并探讨了蒙特卡洛算法的基本概念。通过示例展示了利用蒙特卡洛方法估算π的简单实现,强调了计算机高速计算对蒙特卡洛算法的重要性。

分享一下我老师大神的人工智能教程!零基础,通俗易懂!http://blog.youkuaiyun.com/jiangjunshow

也欢迎大家转载本篇文章。分享知识,造福人民,实现我们中华民族伟大复兴!

                       

 

通过这篇短文想说明两个道理:

   
   
  1.    
  2. 看似高大上、神秘兮兮的算法,都是paper tiger;
  3.    
  4. 计算机的计算方式(动辄几Ghz的主频)简直就是为蒙特卡洛度身定做;
  5.    
 

一、 准备

1.1 生成任意区间任意大小的伪随机数

 

C语言中的rand()更深远的意义在于其对应于数学(概率论)中的均匀分布(uniformed distributed)。

C语言生成伪随机数的函数:

int rand(void);
  
  
  
  • 1

该函数随机生成0~RAND_MAX之间内的整数:

#define RAND_MAX 0x7fff  // 0x7fff == 32767
  
  
  
  • 1

产生随机数需要设置种子:

void srand(unsigned int _Seed);
  
  
  
  • 1

这两个函数所在的头文件是stdlib.h或者cstdlib,后者又被包含在iostream头文件中。
有了rand()这个可以生成0-RAND_MAX随机数(整数)的函数,经过一定的四则运算和取模运算,便可很容易地得到任意区间的随机数。
以生成(2, 5)之间的随机数(可整可小)为例:


评论 2
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值