网游服务端面试题求解解决办法
网游服务端面试题求解1.游戏中有一个节日活动,活动时间是从早上8点到晚上8点这12个小时。活动期间,随时都有
网游服务端面试题求解
1.游戏中有一个节日活动,活动时间是从早上8点到晚上8点这12个小时。活动期间,随时都有可能会有玩家向npc交付任务。系统需要在活动期间内交付任务的玩家中随机选取3名玩家,在交付任务的同时给予奖励。在参与玩家人数不确定的情况下,如何随机选取?
2.如何在半径为1的圆内均匀的随机选中一点?假设圆心在坐标(0,0)。可用工具float rand(),该函数可以均匀的返回[0,1]内的随机数。
面试 网游
[解决办法]
要求公平,保证恰好3人中奖,当场得知中奖,3点里至少需要牺牲一点。想要同时满足那你就必须在第一个人来的时候就知道最终有多少人,那是不可能的。
rand()*2-1就能取-1到1了,这是小问题。
[解决办法]lz头像给力,回答一下第一题
第一题的需求是必须估算出提交活动的人数m,这个只要知道服务器相关数值和历史活跃数据,计算不难。
剩下的问题是,如何在m人中以几率N抽奖保证抽中奖的人数为3.
可转化为以几率N抽奖抽m/3次必中,N多大
即(1-N)^(m/3)<=0.000000...01
可求出N的边界值。
当然,因为m是估算值,N可适当提高,当中奖数达到3人后,N=0。这样既能保证公平,又能即时通知中奖,且保证3人中奖,缺陷是,存在0.000000...01的误差率,但可以解决实际问题。