给你一个文件,或数组之类的,不知里面的元素的个数,要求遍历一遍,随机等概率的取出里面的一个记录
分析:这个真不容易想到,百度了一下,借鉴了别人的思想,整理的一下自己的代码
// [10/6/2013 qingezha]遍历一个文件,里面元素个数不知道,让你设计一个算法遍历一遍,等概率的随机取出一个元素
// 可以这样:设现在遍历到第 i 个元素,现在判断如果 rand()%i为0则将返回值更新为第i个元素;否则不变
char get_equal_char(char *arr)
{
if(arr == NULL)
return NULL;
int i = 1;
char re_char = arr[0];
char *temp = arr;
while(*arr)
{
if(rand()%i==0) //这里牛逼
re_char = arr[i-1];
++i;
++temp;
}
return re_char;
}
本文介绍了一种算法,可以在遍历未知元素数量的文件或数组时,等概率地随机抽取一个元素。通过实现一个函数,利用随机数生成器在每次遍历时决定是否更新待选元素,最终在遍历结束后返回随机抽取的元素。

被折叠的 条评论
为什么被折叠?



