一道网易数据分析题的R解法

题目如下:

现提供50分白球、50个红球及两个容量为100个球的空桶,请设计一种100个球分桶方案,依次从两个桶中各拿一个球,使得拿到两个红球的概率最大。


答:设两桶分别为A桶与B桶,A桶中有红球x个,白球y个,那么B桶中有红球50-x个,白球50-y个。又根据题目可知,能依次从两个桶中各拿一个球,则原问题可转化为如下约束优化问题:

maxz=x(50x)(x+y)(100xy)

s.t.=x+y1x+y99

也就是说,原问题变成了一个在最大化取到两个红球概率下,求解每个桶中被分配到的红球数量的问题。
此题可以利用R进行作图回答:
如下图,利用R构建z的三维坐标图

图-1

图-2

如上图所示,x轴表示A桶中红球的数量,y轴表示A桶中白球的数量,z轴表示拿到两个红球的概率。由上图可知, z的最大取值应是约为0.5(当x=0,y=0时取得,但x,y不能同时为零),又为了保证每个桶里至少有一个红球,所以当x=1,y=0时可取得最大概率。另一解x=49,y=50(因为x+y≤99)与上述答案无差别,因为A,B桶同质。

结论:一个桶应放1个红球,0个白球,另一桶里放置49个红球,50个白球,最终概率为49/99 。

附R代码如下:

>install.packages("rgl")
>>install.packages("evd")
>>install.packages("MASS")
>library(rgl)
>library(evd)
>library(MASS)


> x<-0:50
> y<-0:50
> f<-function(x,y){x*(50-x)/((x+y)*(100-x-y))}
> z<-outer(x,y,f)#x,y use as parameter of f
> open3d()
> bg3d("white")
> material3d(col="black")
> persp3d(x,y,z,xlab ="x-redball",ylab="y-whiteball",zlab="z-probability",col="grey")
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值