题目

抢红包游戏:微信抢红包游戏成为了一代人的经典回忆,游戏将总金额为n的“红包”随机分配给m个玩家,红包的分配需同时满足以下规则:①所有人抢到的金额总和跟总金额n相等;②每个人至少抢到1分钱;③每个人抢到的金额随机;④每个人抢到金额大小的概率平等。 满足以上规则的最简单算法可描述为:假设总金额为n元,为使问题简单化,我们将总金额乘以100,此时的单位为分,使得问题在整数范围内解决。假设分发给m个人,则我们只需在[1,100n- 1]长度的范围内随机生成m-1个不重复的点,这些点将长为100n的线段划分为m个段,每一段长度即可表示红包金额,再将每一段长度数据除以100换算为单位元输出。 编程实现:分别在文本框Text1 和Text2中输人总金额n和总人数m,点击“抢红包”按En钮commandl,在列表框Listl中输出抢红包结果,并输出“手气最佳”数据。程序运行界面如下图所示。实现上述算法的VB程序如下,回答以下问题: (1) 为使程序开始运行时,窗体标题自动更改为“趣味抢红包”,则可在(单选,填字母:(A .Command1_ Click()/ B .Form_ Load()/C .Form1. Load())事件处理过程中添加语句Forml. Caption=“趣味抢红包”。 (2) 请将划线处的代码补充完整。 Private Sub Command1_ Click() Dim n As Integer, m As Integer     Dim f(1 To 32767) As Boolean n= Int(Val(Text1.Text) * 100)     m= Val(Text2.Text)     If m> n Then         List1.AddItem "游戏无法继续,结束!"     Else         Randomize         For i=1 To m- 1 t= Int(Rnd * (n-1))+1                          f(t)= True         Next i                  begin= 1         Max=0         For i=1 To n             If f(i) Then                                  If red > Max Then Max= red                       '改错                 List1.AddItem Str(red / 100)             End If         Next i         List1.AddItem "手气最佳:"+Str(Max / 100)     End If End Sub (3) 方框处的代码有误,请改正。 (4) 虚线框内的代码实现的功能是。 答案: 【1】B 【1】f(n)=True【2】red=i-begin+1或其它等 价表达式 begin= i+1 【1】随机数去重
信息技术 试题推荐
最近更新