随机数问题——微软面试题

简介: 之前同学面试微软,问了一个问题:如果给你一列物品,这列物品各自都有一个权重。如果根据权重随机选取物品。权重值越大,选中的概率就越大。 第一想法肯定就是根据权重的大小扩充这个数组。比如数组里有[‘apple’,’cherry’,’banana’],对应的权重是[3,4,1]。

之前同学面试微软,问了一个问题:如果给你一列物品,这列物品各自都有一个权重。如果根据权重随机选取物品。权重值越大,选中的概率就越大。
QQ_20180808145819

第一想法肯定就是根据权重的大小扩充这个数组。比如数组里有[‘apple’,’cherry’,’banana’],对应的权重是[3,4,1]。那么我们把数组扩充成

[‘apple’,’apple’,’apple’,’cherry’,’cherry’,’banana’]

就像这样,然后每个物品选取的概率就是1/(sum(权重))。
但是这个方法有个问题,第一:占用了太多空间。如果权值很大,则需要一个很大数组。

相关文章
【微软面试题】请计算出1的个数
【微软面试题】请计算出1的个数
字节跳动------剑指offer专题精选谷歌、微软等知名IT企业典型面试题
字节跳动------剑指offer专题精选谷歌、微软等知名IT企业典型面试题
172 0
字节跳动------剑指offer专题精选谷歌、微软等知名IT企业典型面试题
|
机器学习/深度学习 算法
LintCode 题解丨微软面试题:寻找旋转排序数组中的最小值
LintCode 题解丨微软面试题:寻找旋转排序数组中的最小值
LintCode 题解丨微软面试题:寻找旋转排序数组中的最小值
|
算法 Java C++
LintCode领扣 题解丨微软面试题:大楼轮廓
LintCode领扣 题解丨微软面试题:大楼轮廓
LintCode领扣 题解丨微软面试题:大楼轮廓
|
算法 测试技术 调度
“我的一次微软面试经历”
大约在2-3个月前,我在Linkedin上看到了微软员工发布的一系列消息。当时正值微软招聘大三的学生作为软件工程师的暑期实习生。看到这些消息后,我非常兴奋,而且我不想错过这次机会。
1908 0
“我的一次微软面试经历”