算法洗脑系列(8篇)——第八篇 概率思想
今天写最后一篇来结束这个系列,我们知道很多算法解决问题的步骤都是固定的,而概率算法每一步的选择都是随机的,
当在某些领域问题中通常比最优选择省时,所以就大大提高了算法的效率,降低了复杂度。
一:思想
这里主要讲一下“数值概率算法”,该算法常用于解决数值计算问题,并且往往只能求得问题的近似解,同一个问题同样的概率算法
求解两次可能得到的结果大不一样,不过没关系,这种“近似解”会随时间的增加而越接近问题的解。
二:特征
现实生活中,有很多问题我们其实都得不到正确答案,只能得到近似解,比如“抛硬币”求出正面向上的概率,”抛骰子“出现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 }
转载于:https://www.cnblogs.com/huangxincheng/archive/2012/02/14/2350275.html
算法洗脑系列(8篇)——第八篇 概率思想相关推荐
- 算法洗脑系列(8篇)——第六篇 回溯思想
记得广告中经常听到过,抱着试试看的态度买了3个疗程,效果不错........ 也经常听人说过什么车到山前必有路,船到桥头自然直. 哈哈,这种思想就是回溯思想,也可称为试探思想. 一: 思想 有时我们 ...
- 算法洗脑系列(8篇)——第七篇 动态规划
今天跟大家分享下算法思想中比较难的一种"动态规划",动态规划给人像是作战时常用的"迂回战术",或者说是 游击战,在运动中寻找突破口. 一: 思想 首先要了解&q ...
- python学习之路基础篇(第八篇)
一.作业(对象的封装) 要点分析 1.封装,对象中嵌套对象 2.pickle,load,切记,一定要先导入相关的类二.上节内容回顾和补充 面向对象基本知识: 1.类和对象的关系 2.三大特性: 封装 ...
- linux中的shell有printf吗,Linux Shell系列教程之(八)Shell printf命令详解
在上一篇:Linux Shell系列教程之(七)Shell输出这篇文章中,已经对Shell printf命令有了一个简略的介绍,本篇给大家详细介绍下Shell中的printf命令. 一.Shell p ...
- 《两日算法系列》之第四篇:隐马尔可夫模型HMM
目录 1. 定义与假设 2. 相关概念的表示 3. 三个基本问题 3.1. 概率计算问题 3.2. 学习问题 3.3. 预测问题 总结 1. 定义与假设 李雷雷所在城市的天气有三种情况,分别是:晴天. ...
- Raspberry-Pi-PICO系列--第八篇 高级篇使用SWD接口下载和调试(第二章)
一.目的 在上一篇<Raspberry-Pi-PICO系列--第八篇 高级篇使用SWD接口下载和调试(第一章)> 我们已经介绍了如何准备openocd.如何编译picoprobe.如何进行 ...
- 洗脑 方法篇 洗脑集中营(转载)
当传销风潮席卷全国的时候,只有一种人觉得恐惧,就是了解"洗脑"内幕并且没有被洗脑的人.参与传销者已经被彻底"洗脑",他们作为传销组织虔诚的信徒,生活在亢奋的幸福 ...
- Python金融系列第八篇:Fama-French 多因子模型
作者:chen_h 微信号 & QQ:862251340 微信公众号:coderpai 第一篇:计算股票回报率,均值和方差 第二篇:简单线性回归 第三篇:随机变量和分布 第四篇:置信区间和假设 ...
- 【手写 Vue2.x 源码】第二十八篇 - diff 算法-问题分析与 patch 优化
一,前言 首先,对 6 月的更文内容做一下简单回顾: Vue2.x 源码环境的搭建 Vue2.x 初始化流程介绍 对象的单层.深层劫持 数组的单层.深层劫持 数据代理的实现 对象.数组数据变化的观测 ...
最新文章
- android OkHttp form 上传图片和参数
- 10分钟搞懂:亿级用户的分布式数据存储解决方案
- UVA12325Zombie's Treasure Chest 宝箱
- LightOJ - 1027 A Dangerous Maze —— 期望
- C++ 在派生类中使用using声明改变基类成员的可访问性
- android url格式化,Android利用SpannableString实现格式化微博内容
- 树莓派摄像头_Arducam 8MP重磅来袭,为树莓派4B构建完全同步的双摄像头方案~
- .net core 调用c dll_C++ 调用C封装DLL库的两种方式
- Mysql 数据库字符集转换及版本升级/降级的详细教程
- 【Java从0到架构师】RocketMQ 基础 - 应用、核心组件、安装
- 自定义sql_基于Calcite自定义SQL解析器
- UINavigation​Controller 的详解(基于 API )
- mysql 数据导入导出说明
- 抽空写了个小游戏(未完待续)
- 大使、布道师、贡献者,OpenHarmony社区发起三大贡献者激励计划
- favicon.ico介绍,网页图标的制作动态网页图标
- android 服务检测,Android检测某个服务是否还活着代码
- OpenGL基础绘制
- 如何在sap里设置自定义打印纸张
- ABP框架下文件下載