如何设计一个随机算法在固定时间内运行?

How to design a randomized algorithm to run in a fixed time?

有谁知道如何在固定时间(5 分钟)内将随机算法(Monte Carlo 模拟近似值)最好地实现到 运行? 即算法将继续采集新样本,直到执行时间大约为 5 分钟?

该算法可以帮助在固定时间内比较不同的随机化方法。

谢谢。

正如@Nico Schertler 所说,您只有一个基于时间的 while 条件,然后您可以在使用时间作为约束的 while 循环中正常使用这些 monte carlo 模拟示例中的任何一个。

http://rosettacode.org/wiki/Monte_Carlo_methods#MATLAB

你的问题有点含糊,但有几个可能的答案。如果您只是一遍又一遍地独立采样(因此采样通常非常快,与您的总时间相比),那么您所需要的就是访问您的语言的系统计时器,以便您可以检测到您的 运行宁时间基本上等于你允许的最大运行宁时间,然后停下来给出你的估计。

然而,也有一些随机算法的预期时间为 运行ning,它们可能会或不会在最大允许时间内完成。如果这就是您要处理的问题,那么最好的方法是根据任何随机性假设了解 运行 宁时间的分布,然后制定一个策略,您 运行 一个算法指定的时间量,如果还没有完成则停止,然后以新的随机性重新启动。例如,如果在 N 步内完成的概率是 0.9,而在 2N 步内完成的概率是 0.01,否则你完成超过 2N 步,那么如果你只有 2N 步可用,你最好的策略是在 N 步后重新开始如果你还没有完成。这最大化了在 2N 步内完成的概率。