- 论坛徽章:
- 0
|
原帖由 linuxcici 于 2008-3-25 07:10 发表
面试主要看看题目而已.
从1----1百万个数字里面随机抽取五十万个不同的数字.
记住喔. 是高效的方法. 今天的笔试题目. 大约要用10分钟完成. 游戏python职位. 我做偏了今天. 因为没听清楚是五十万个不 ...
第一题感觉这样做比较好:
假设题意是n个数字里抽取m个不同的数字,并且每个数字抽到的概率相等。
- // choose m distinct numbers from A[1..n], and return the numbers as a list.
- function choose(A, n, m) {
- if (m == n) return A[1..n];
- sample u ~ [0, 1);
- if (u < m/n) return {choose(A, n-1, m-1), A[n]} // accept A[n]
- else return {choose(A, n-1, m)} // reject A[n]
- }
复制代码
这样可以保证抽到的m个数概率都是m/n.
[ 本帖最后由 emacsnw 于 2008-3-26 09:46 编辑 ] |
|