算法之概率思想
来源:互联网 发布:java商城项目 编辑:程序博客网 时间:2024/06/10 11:57
一:思想
这里主要讲一下“数值概率算法”,该算法常用于解决数值计算问题,并且往往只能求得问题的近似解,同一个问题同样的概率算法
求解两次可能得到的结果大不一样,不过没关系,这种“近似解”会随时间的增加而越接近问题的解。
二:特征
现实生活中,有很多问题我们其实都得不到正确答案,只能得到近似解,比如“抛硬币”求出正面向上的概率,”抛骰子“出现1点的
概率,再如:求“无理数π”的值,计算"“定积分”等等。针对这样如上的情况,使用概率算法求解是再好不过的了。
三: 举例
数值概率中,最经典的一个题目就是“计算定积分”,设f(x)=1-x2 ,计算定积分:I = ∫01 (1-x2)dx 的值。
分析:第一步: 我们画出函数f(x)=1-x2 在[0,1]的坐标图:
第二步:如果我们向矩形随机投点,那么落入“阴影区”的概率就是
P投点=S阴影/S正方形=∫01 (1-x2)dx /∫01 (1)dx=∫01 (1-x2)dx,
所以问题就演化为:求出随机点落入阴影区的概率即为定积分∫01 (1-x2)dx的近似值。
比如我们向正方形投入N个点。M个点落在阴影区,则概率P=m/n;
最后:上代码
1 using System;
2 using System.Collections.Generic;
3 using System.Linq;
4 using System.Text;
5
6 namespace Gailv
7 {
8 public class Program
9 {
10 static void Main(string[] args)
11 {
12 while (true)
13 {
14 Console.WriteLine("阴影区的投点概率为:" + Darts(10000));
15 }
16 }
17
18 static double Darts(int n)
19 {
20 int count = 0;
21
22 for (int i = 0; i < n; i++)
23 {
24 double x = new Random().Next(0, 100) / 100.0;
25
26 double y = new Random().Next(0, 100) / 100.0;
27
28 if (y <= 1 - Math.Pow(x, 2))
29 count++;
30 }
31 return (double)count / n;
32 }
33 }
34 }
0 0
- 算法之概率思想
- 概率算法思想
- 算法研究之概率
- 概率思想
- 概率思想
- 算法之递归思想
- 算法之贪心思想
- 算法之枚举思想
- 算法之分治思想
- 算法之回溯思想
- 常用算法思想之:递推思想
- 常用算法思想之:递归思想
- 常用算法思想之:分治思想
- 随机算法1之概率算法
- java基础算法学习之概率算法
- 算法学习笔记之概率算法
- 统计学中条件概率之于贝叶斯思想
- 啊哈,算法之二分思想
- struts(五) 使用通配符 接收参数
- hdu 2473 Junk-Mail Filter(并查集(虚拟父节点))
- Android:Back button 和 Action Bar UP button 不完全解析
- 大数据处理时的一种BitMap小算法
- HDU 5288 OO’s Sequence (二分查找)
- 算法之概率思想
- 3D数学基础笔记
- 学习Unity3d Shader笔记:用到的一些对象和关键字纪录
- 转:代码之美——Doom3源代码赏析
- LOL模型与骨骼动作的导入与导出
- Unity3d 实现对象的XML格式化和反序列化
- [转]全面理解Unity加载和内存管理机制之一
- [转]全面理解Unity加载和内存管理机制之二:进一步深入和细节
- Cocos2d-x 发布android版本中加人iconv库