我是 C 的新手,被 subj 卡住了。我可以拆分字符串,strtok
但我不知道如何获取随机令牌。
谢谢。
您可以对其进行两次解析,然后获取一个随机数并选择一个,然后在第二次传递同一字符串时收集该随机数。
或者,如果您使用水库采样,您可以一次性完成。
掌握水库采样将是学习 C 作为学习数学的一个非常有用的方法!:)
以下伪代码显示了如何返回在字符串的标记中统一选择的候选者:
字符串结果=空; 整数令牌 = 0; 而(真){ 字符串候选 = 下一个标记; 如果(候选人不存在)中断; 代币 = 代币 + 1; if ((在0和tokens-1之间选择的随机整数) == 0) result = token; } 返回结果;
这是 Knuth 的计算机编程艺术第二卷第 3.4.2 节中算法 R的一个特例。