37%最佳停止观望原理的matlab实现

还是毕导THU的“脱单视频”给与我些许启发,感兴趣的小伙伴们可以Look一下这个链接:https://www.bilibili.com/video/BV1uJ411D7AW

在这里,我忍不住用手头的工具实现这个37%法则,工具是matlab,众所周知,蒙特卡洛方法是按抽样调查法求取统计值来推定未知特性量的计算方法。举个例子,如果要计算边长为a的正方形最大内接圆的面积,可以用数不清的粒子“撒”在正方形内,统计落在最大内接圆的粒子数量,利用落在圆内与落在正方形内粒子数量比值,通过已知的正方形面积预测圆形面积。

毕导的100个人,模拟恋爱100w次运行时间过长,因此,我就把100人缩成10人,来模拟实现37%法则。

在这里,我用1到10作为10个人的全排列,数值最大的10对应的人,为最佳交友对象。举个例子,一共3个人等待被选择,则一共有3!=6种排列方案,能选择出3的一共有3种方案,则当人数为3时,37%法则下求得最佳(男/女)友的概率为50%,至于什么是37法则,详情可以参考上述视频链接。

代码参考如下:

function rate=love(n)
k=round(0.37*n);
male=[1:n];
arrange_male=perms(male);
count=0;

[row,col]=size(arrange_male);
[max_value,max_index]=max(arrange_male(:,1:k),[],2);
for i=[1:1: row]
    if ( ( max_value(i)<arrange_male(i,k+1) )&&(arrange_male(i,k+1)==n)  )|| ( ( max_value(i)>arrange_male(i,k+1) )&&(arrange_male(i,k+2)==n)  )
        count=count+1;
    end
end
rate=count/factorial(n);

基于上述方法,只有当前37%的人没有出现最大值,且正好第37%个人之后整数位的人对应数值最大,或者前37%的人都比第37%个人之后整数位的人对应数值要大,但该数后一位的人对应数值正好是最大值的情况下,才是最佳选择。

按照下图函数调用,画图:

 n=10;
result=zeros(1,n);
result(1)=1;
result(2)=0.5;
for i=[3:1:n]
    result(i)=love(i);
end
figure(1)

x=[1:n];
y=result(:);
plot(x,y,'r')
xlabel('表白人数');
ylabel('表白成功概率');
hold on
for i=[1:n]
    f(i)=1/i;
end
y1=f(:);
plot(x,y1,'b');
legend('37%法则下的概率','盲选下的概率');
title('37%法则与盲选在不考虑被拒的条件下表白成功概率');

基于上述方法,只有当前37%的人没有出现最大值,且正好第37%个人之后整数位的人对应数值最大,或者前37%的人都比第37%个人之后整数位的人对应数值要大,但该数后一位的人对应数值正好是最大值的情况下,才是最佳选择。

按照下图函数调用,画图:

如图,结果验证37%法则确实比“盲猜好用”....

在考虑被拒的条件,我们要修改37%这个百分比,拒绝概率与放弃对象的函数关系如下图:

result_p=zeros(1,9);
q=[0.1:0.1:0.9];
syms p;
g=(1-p)^(1/p);
result_p(1,1)=limit(g,p,0)
for i=[2:1:9]
    result_p(1,i)=(1-q(1,i))^(1/q(1,i));
end
figure(2)
x=q(:);
y=result_p(:);
plot(x,y);
xlabel('拒绝概率p');
ylabel('放弃男生比例');

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: GPS(全球定位系统)定位原理是通过测量接收器和多个卫星之间的时间差,从而确定接收器的位置的一种技术。GPS系统由一组卫星组成,这些卫星绕地球轨道运行。接收器接收来自这些卫星的信号,并计算信号传播的时间差。 GPS定位原理实现过程如下:首先,接收器需要收到至少4个卫星的信号,以计算出接收器的三维位置和时间。每个卫星都会向接收器发送包含时间戳的无线信号。接收器接收到这些信号后,通过计算信号传播的时间差来确定接收器与卫星的距离。 接收器通过比较接收到的信号与卫星发送的信号之间的时间差,可以计算出接收器与每个卫星之间的距离。为了准确计算距离,接收器需要知道卫星发送信号的时间。因此,卫星会定期向接收器发送当前时间戳。 一旦接收器确定了与至少4个卫星之间的距离,它可以通过三角定位法计算出接收器的精确位置。通过测量距离和已知的卫星位置,接收器可以推断出自己的位置。 Matlab是一种功能强大的数学软件,可以用于处理和分析GPS信号数据。要实现GPS定位原理,可以使用Matlab提供的信号处理和数学函数来计算接收器与卫星之间的距离,以及推断接收器的位置。Matlab还可以用于可视化GPS定位结果和分析定位误差。 总之,GPS定位原理通过接收器和卫星之间的时间差来确定接收器的位置。Matlab可以提供强大的数学和信号处理功能,用于实现GPS定位原理并进行数据处理和分析。 ### 回答2: GPS定位原理是利用地球上的多个卫星系统进行测量和计算,从而确定地理位置的方法。GPS系统由一组卫星组成,这些卫星绕地球轨道运行,并向接收器发送信号。接收器接收到至少三个卫星的信号后,使用接收到的信号的延迟时间差来计算出接收器与卫星之间的距离。 GPS定位原理中,卫星发射的信号包含了卫星的位置和发射的时间信息。接收器接收到这些信号后,通过计算信号的延迟时间差,可以确定接收器和卫星之间的距离。接收器同时接收到三个及以上卫星的信号后,利用三边测量原理计算出自身与卫星的距离。再通过卫星的位置信息,接收器可以确定自己的位置。 Matlab实现GPS定位可以通过处理接收到的卫星信号来计算位置。首先,需要通过Matlab编程读取卫星信号数据。然后,使用信号的延迟时间差计算出自身与卫星的距离。接下来,根据卫星的位置信息,利用三角测量原理计算自己的位置。最后,通过Matlab显示和分析定位结果。 在Matlab中,可以使用内置函数如`readmatrix`读取卫星信号数据,使用`pdist`计算距离,使用三角函数计算位置,使用`plot`函数显示结果等。通过使用这些函数和Matlab的数学计算、图形显示和数据处理功能,可以实现GPS定位的算法和可视化分析。 总之,GPS定位原理是通过测量卫星信号的延迟时间差来计算位置,而Matlab提供了丰富的数学计算和数据处理函数,可以实现GPS定位算法并对定位结果进行可视化分析。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值