gpt4 book ai didi

c - 在 C 中限制程序的执行时间(蒙特卡罗技术)

转载 作者:太空宇宙 更新时间:2023-11-04 06:43:27 25 4
gpt4 key购买 nike

我正在从事一个项目,该项目没有确定的算法来使用 C 语言解决。我正在使用蒙特卡罗技术来解决这个问题。而随机猜测的次数我想限制在用户指定的执行时间内。这意味着我想充分利用用户定义的执行时间限制(作为命令行参数)来进行尽可能多的随机迭代。我可以检查循环条件的执行时间吗?

for(trials=0;execution_time<specified_time;trials++)

如果是这样,我该怎么做?或者如果还有其他方法,欢迎。谢谢。

附言我使用 Code Blocks 10.05 进行编码和 GNU 编译器。

最佳答案

是的,如果您的计算机上有足够细粒度的时钟(并且您有)。

  1. 记录模拟开始的时间。

  2. 对于循环中的每一次旅行,找到当前时间以及开始时间和现在之间的相应增量。如果该值大于限制,则停止。

如果您使用具有一秒粒度的 time(),请注意量化效果。如果用户说“1 秒”,如果您的程序在 T=N.999s 开始并在 T=(N+1).001s 停止,您可能会运行一小部分秒。任何量子都可能产生相同的效果,但由于微秒和纳秒是正常的亚秒级粒度,因此量子的大小不再是问题。

我知道的高分辨率时钟函数有:

  • clock_gettime() - POSIX(纳秒)
  • gettimeofday() - POSIX(微秒)
  • times() - Unix 系统 V(每秒 CLK_TCK)
  • ftime() - 古代 Unix(毫秒)
  • 时钟() - ISO C - (CLOCKS_PER_SEC)
  • time() - ISO C -(秒)

关于c - 在 C 中限制程序的执行时间(蒙特卡罗技术),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4705696/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com