由买买提看人间百态

boards

本页内容为未名空间相应帖子的节选和存档,一周内的贴子最多显示50字,超过一周显示500字 访问原贴
JobHunting版 - 从N个元素中随机抽取K个元素的方法?
相关主题
前段时间整理的随机算法对Amazon的印象受影响了
好记(但不是最优)的combination算法Wildcard String Matching和怎么提高写程序能力的总结
问一个算法题目shuffle card 算法
关于排列组合的题目的算法码农(程序员)的长远目标是什么? 应该以什么为目标来追求?
微软电面题关于LinkedIn家分行打印的题
请推荐 算法 和数据结构 的经典书how to shuffle a deck of cards?
MS电面假如高纳德参加AFGM面试
MS Campus Interview Question (SDE position)数独有啥好解法?
相关话题的讨论汇总
话题: int话题: remain话题: array话题: 方法话题: select
进入JobHunting版参与讨论
1 (共1页)
j**l
发帖数: 2911
1
假定K <= N
下面两种方法哪个更好?
方法一
int remain = N;
int select = K;
for (int i = 0; i < N; i++)
{
if (rand() % remain < select)
{
cout << i << " ";
--select;
}
--remain;
}
方法二,Knuth洗牌算法K步以后停止
for (int j = 0; j < K; j++)
{
int index = random(j, N-1); // including j and N-1
swap(array[j], array[index]);
cout << array[index] << " ";
}
j***n
发帖数: 301
2
我喜欢2,呵呵

【在 j**l 的大作中提到】
: 假定K <= N
: 下面两种方法哪个更好?
: 方法一
: int remain = N;
: int select = K;
: for (int i = 0; i < N; i++)
: {
: if (rand() % remain < select)
: {
: cout << i << " ";

1 (共1页)
进入JobHunting版参与讨论
相关主题
数独有啥好解法?微软电面题
原创出一道好的算法题并不容易请推荐 算法 和数据结构 的经典书
各位CS的,CLRS,TAOCP这几本书都看了么MS电面
请教:The Art of Computer Programming 到底有几本书啊?MS Campus Interview Question (SDE position)
前段时间整理的随机算法对Amazon的印象受影响了
好记(但不是最优)的combination算法Wildcard String Matching和怎么提高写程序能力的总结
问一个算法题目shuffle card 算法
关于排列组合的题目的算法码农(程序员)的长远目标是什么? 应该以什么为目标来追求?
相关话题的讨论汇总
话题: int话题: remain话题: array话题: 方法话题: select