我是一个新的C,结果被套牢SUBJ。我可以strtok分割字符串,但我不知道如何获得一个随机令牌。

感谢。

有帮助吗?

解决方案

您可以解析它两次,然后得到一个随机数,挑一个,你在同一个字符串的第二次采集。

或者,也可以做在单次通过如果使用储层采样

掌握储取样将学习C作为侧学习一些数学的非常有用的方法! :)

其他提示

在下面的伪代码示出了如何将返回字符串的令牌中均匀地选择的候选:

string result = null;
int tokens = 0;
while (true) {
  string candidate = next token;
  if (candidate does not exist) break;
  tokens = tokens + 1;
  if ((a random integer selected between 0 and tokens-1) == 0) result = token;
}
return result;

这是一个特殊情况的算法有r 从Knuth的的计算机程序设计艺术的第二卷第3.4.2节

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top