当前位置:   article > 正文

必知C++算法之概率基本问题_c++概率算法

c++概率算法
概率

概率、期望计算(期望是概率和随机变量乘积的总和)

往往利用古典概率进行计算(组合数学

概率应用

1.利用随机来改进著名算法(快速排序

2.随机数的发生器(用给定的随机数发生器构造另外一个)

8只球队,有3个强队,其余都是弱队,随机把他们分成4组比赛,每组两个队,问两强不相遇的概率是多大

1.首先求出8只球队分成4组比赛的方法数

7x5x3x1 = 105种

2.没有两强相遇的方法数

在5只弱队中选出3只与强队配对剩下的2只自行配对

C5 3 x A3 3 = 60

3.求两强不相遇的概率为

(105-60)/105 = 3/7

三只蚂蚁从正三角形的三个顶点沿着边移动,速度是相同的,问他们碰头的概率是多少?

每只蚂蚁2种方向,一共三只,所以总共情况为2x2x2 =8种

只有完全顺时针和完全逆时针2种情况不相遇

故此相遇的概率为: (8-2)/8 = 3/4

某地区重男轻女,一个家庭如果出生一个女孩就一直生,直到生出男孩就停止生育。假设一胎就生一个,问时间足够长后,该地区男女比例是会变为多少

答案:时间足够长后,男女比例依然1:1

假设有n个家庭

n/2的家庭第一胎就生出男孩,所以只有1个孩子。

有n/4的家庭先生1女孩,再生1男孩,有2个孩子。

有n/8的家庭线生2女孩,再生1男孩,有3个孩子。

孩子总数为:

n/2+(n/4)x2+(n/8)x3 +(n/16)x4… = 2xn

每个家庭都会有一个男孩,所以2n的孩子中,男孩数为n,所以女孩数也为n。

所以比列依然为1:1

给定一个等概率随机产生15的随机函数,除此之外,不能使用任何额外的随机机制,请实现等概率随机产生17的随机函数

1.根据1~5的随机函数结果减1,得到f() ->0,1,2,3,4

2.f()x5->0,5,10,15,20

3.f()x5+f()->[这两个f()是分别调用,不能化简] 0,1,2,3,4,…24

4.如果步骤3产生的数大于20,则重复进行步骤3,直到产生的结果在0~20之间

5.步骤4的结果将等概率随机产生020,所以步骤4的结果%7之后等概率产生06

6.步骤5的结果加1,将等概率产生1~7

给定一个以p概率产生0,以1-p概率产生1的随机函数f(),p是固定的值,但你并不知道是多少。除此之外也不能使用任何额外的随机机制,请用f()实现等概率随机产生0和1的随机函数。

产生01和10序列的概率都是px(1-p)

循环调用f(),直到能产生01或10,序列终止。

如果产生了01,返回0.

如果产生了10,返回1.

假设函数f()等概率返回一个在[0,1)范围上的浮点数,在[0,1)区间上的数出现的概率为x(0<x<=1)。给定一个大于0的整数k,并且可以使用f()函数,请实现一个函数依然返回在[0,1)范围上的数,但是在[0,x)区间上的数出现在概率为x的k次方。

本题只用调用K次f(),返回较大的数,即可。

给定一个长度为N且没有重复元素的数组arr和一个整数M,实现函数等概率随机打印arr种的M个数(必掌握小技巧)

将随机打印出的数放到arr的尾部

随机一与尾部N-1位置交换

随机二与尾部N-2位置交换

。。。

直到打印M个数即可

还有一个蓄水池抽样算法可自行了解
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/菜鸟追梦旅行/article/detail/227061
推荐阅读
相关标签
  

闽ICP备14008679号