给你一个文件,或数组之类的,不知里面的元素的个数,要求遍历一遍,随机等概率的取出里面的一个记录
分析:这个真不容易想到,百度了一下,借鉴了别人的思想,整理的一下自己的代码
// [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;
}