求教一个现实事件问题的VB代码,望高手予以解答。

[复制链接]
查看11 | 回复3 | 2011-5-19 02:13:10 | 显示全部楼层 |阅读模式
事件如下:

一间公司招聘一人,现有A、B、C三人前来应聘。现赋予每人三个能力值,分别为经验E、技能S、工作年限T。

A的数值为(6,3,1),B的数值为(3,5,2),C的数值为(1,2,7)

现有评委1、评委2、评委3,共三名评委参与筛选求职者。

给予的分数中,经验所占的比例为X,技术比例为Y,工作年限比例为Z,X、Y、Z均为随机整数,但规定XYZ=100。

随机得出三组数字:(X1,Y1,Z1),(X2,Y2,Z2),(X3,Y3,Z3)

而每个求职者的得分为:E*(X1X2X3)S*(Y1Y2Y3)T*(Z1Z2Z3)

得分高者获得公司招聘,求模拟一千次、一万次、十万次后,A、B、C各自获得聘请的概率。

求这个事件在VB上面模拟的代码,小弟先在这里感谢各位了。
回复

使用道具 举报

千问 | 2011-5-19 02:13:10 | 显示全部楼层
DimCap(1To3,1To3)AsInteger\'能力值


PrivateSubCommand1_Click()
DimBl(1To3,1To3)AsInteger\'随机比例
DimScore(1To3)AsInteger\'分数
DimTempAsInteger
DimP(1To3)AsLong\'概率
DimTAsLong
DimTimesAsLong
Times=Val(InputBox(\"请输入模拟的次数\",\"提示\"))
IfTimes1Then
MsgBox\"模拟次数不能小于1\"
ExitSub
EndIf
Cls
T=Times
Print\"模拟次数:\"0
Times=Times-1
Bl(1,1)=Rnd*981
Bl(1,2)=Rnd*(98-Bl(1,1))1
Bl(1,3)=100-Bl(1,1)-Bl(1,2)

Bl(2,1)=Rnd*981
Bl(2,2)=Rnd*(98-Bl(2,1))1
Bl(2,3)=100-Bl(2,1)-Bl(2,2)

Bl(3,1)=Rnd*981
Bl(3,2)=Rnd*(98-Bl(3,1))1
Bl(3,3)=100-Bl(3,1)-Bl(3,2)
Score(1)=Cap(1,1)*(Bl(1,1)Bl(2,1)Bl(3,1))Cap(1,2)*(Bl(1,2)Bl(2,2)Bl(3,2))Cap(1,3)*(Bl(1,3)Bl(2,3)Bl(3,3))
Score(2)=Cap(2,1)*(Bl(1,1)Bl(2,1)Bl(3,1))Cap(2,2)*(Bl(1,2)Bl(2,2)Bl(3,2))Cap(2,3)*(Bl(1,3)Bl(2,3)Bl(3,3))
Score(3)=Cap(3,1)*(Bl(1,1)Bl(2,1)Bl(3,1))Cap(3,2)*(Bl(1,2)Bl(2,2)Bl(3,2))Cap(3,3)*(Bl(1,3)Bl(2,3)Bl(3,3))
Temp=Max(Score(1),Score(2),Score(3))
IfTemp=Score(1)Then
P(1)=P(1)1
ElseIfTemp=Score(2)Then
P(2)=P(2)1
Else
P(3)=P(3)1
EndIf
Loop
Print\"聘请A的概率为:\"MaxThenMax=b
IfcMaxThenMax=c
EndFunction
回复

使用道具 举报

千问 | 2011-5-19 02:13:10 | 显示全部楼层
朋友,你这个是简单...不过貌似没有把各人的聘请概率(百分数)写上去啊...
回复

使用道具 举报

千问 | 2011-5-19 02:13:10 | 显示全部楼层
晕~~~每个人在设定的测试次数里的最高分次数都记录了下来算概率还算不出来的啊
除非你不懂VB了那就不关我的事了最近在写多文档记事本编辑器的代码所以进来看看……
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行