1

我是 C 的新手,被 subj 卡住了。我可以拆分字符串,strtok但我不知道如何获取随机令牌。

谢谢。

4

2 回答 2

5

您可以对其进行两次解析,然后获取一个随机数并选择一个,然后在第二次传递同一字符串时收集该随机数。

或者,如果您使用水库采样,您可以一次性完成。

掌握水库采样将是学习 C 作为学习数学的一个非常有用的方法!:)

于 2010-02-07T18:03:42.403 回答
2

以下伪代码显示了如何返回在字符串的标记中统一选择的候选者:

字符串结果=空;
整数令牌 = 0;
而(真){
  字符串候选 = 下一个标记;
  如果(候选人不存在)中断;
  代币 = 代币 + 1;
  if ((在0和tokens-1之间选择的随机整数) == 0) result = token;
}
返回结果;

这是 Knuth 的计算机编程艺术第二卷第 3.4.2 节中算法 R的一个特例。

于 2010-02-07T18:18:36.373 回答