wxg后台,一面,给我整懵了

大意是:30万员工里随机抽奖找10万员工,现在只有一个能生成(0,65535)之间的数的随机生成器,问要如何完成抽奖?
友友们有思路吗,和面试官讨论了一个小时,关键是他最后给出的答案我也不认可。。。他也不认可我的想法,就很离谱

我的想法:把30万数组分成0~65535一组的5组,两个rand,一个决定组数,一个决定组中的序号
面试官想法:两个rand的值直接相乘,这样值域在(0,2^32)之间,然后就能抽奖了?(我好懵逼,首先乘法之后就不是均匀分布,其次这么大的值域也远超过30万个数字)
#互联网求职##面试题目##腾讯#
全部评论
感觉十个面微信,9个都会问这个题目🤣
1 回复 分享
发布于 2021-05-27 00:30
就是rand5生成rand7的变种吧,我感觉你说的没啥问题
点赞 回复 分享
发布于 2021-05-25 14:30
。。。一模一样的题目
点赞 回复 分享
发布于 2021-05-28 16:15
这道题的关键不是洗牌算法吗?因为抽10万人不能重复。
点赞 回复 分享
发布于 2021-06-04 02:07
int rand300000() {     int x = 0;     do     {         x = 65536 * rand16() + rand16();     } while (x > 14316 * 300000);//14316*300000时最接近65536*65536     return x % 300000; } std::set<int> solution(int targetNum)//target这里取100k {     std::set<int> result;     while (result.size() != targetNum)     {         int selectNum = rand300000();         while (result.find(selectNum) != result.end())         {             selectNum = rand300000();         }         result.insert(selectNum);     } }
点赞 回复 分享
发布于 2021-06-05 21:33
也可以试试去哪儿哈《去哪儿网》-校招内推,免-简历筛选,投递抽iphone,入职送Macbook 用内推码可帮改简历,笔试咨询 能快一步是一步,多投准没坏处😃😃 https://www.nowcoder.com/discuss/706975帮顶,如有打扰回复删除
点赞 回复 分享
发布于 2021-09-09 04:02

相关推荐

10-11 17:45
门头沟学院 Java
走吗:别怕 我以前也是这么认为 虽然一面就挂 但是颇有收获!
点赞 评论 收藏
分享
1 12 评论
分享
牛客网
牛客企业服务