总结-概率期望随机化打表找规律题

本文通过三个实例——Random Point in Triangle、Eddy Walker 和 Expected Size of Random Convex Hull,探讨利用随机化打表寻找规律来求解概率期望问题的方法。通过大量随机取点并计算平均值,得出接近实际答案的规律,强调了随机数生成的重要性以及注意可能出现的精度误差。
摘要由CSDN通过智能技术生成

最近几天遇到了三道随机化打表找规律的题,所以记录一下,学一学套路
1.Random Point in Triangle
给你一个三角形,在里面随机取一个点,问其中那个点与三角形两个顶点所构成的三角形面积最大的期望值
2.Eddy Walker
有一个圈,你从0开始出发,每次可能向前或者向后走一步,问你走完一圈后停在某个点的概率
3.Expected Size of Random Convex Hull
给你一个三角形,在里面随机取N个点,问这个N个点有多少个点在凸包的期望

这些题都有一个特点就是求概率或期望,但不是通常的概率dp,硬推会非常难受,所以我们可以利用随机数生成来完成随机取点打表,需要注意的是我们打表的时候数据要足够随机,数据量要绝对大,这样所打出来的表才会较靠近答案,这样才容易找出正确的规律
1.例如第一题,我们可以造一个很大的三角形,然后随机取点多次取平均,找出规律为 11 ∗ S 11*S 11S
2.第二题,我们取随机数判奇进偶退模拟过程,找出到达所有点的概率都相同
3.第三题,我们可以造一个很大的三角形,然后随机取点,建立凸包,重复多次取平均,找到规律
但是需要注意的是有时候我们打表找出来的数只是一个接近正解的答案,但是与正解有精度误差,我们可以打出分数表看哪个分数接近打表所得到的数
两个常用随机数函数

mt19937  mrand(time(0) :  这个比较随机,随机数据也大        
srand(time(0))  :                这个随机数据范围在32766之内

第三题打表程序

#include<bits/stdc++.h>
using namespace std;
const int N=1e5+5;
const double eps=1e-8;
int sgn(double x)
{
   
	if(fabs(x)<=0)
		return 0;
	if(x<eps)
		return -1;
	return 1;
}
struct Point
{
   
	double x,y;
	Point(double _x=0,double _y=0)
	{
   
		x=_x
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值