ovg*_*vin 6 python algorithm max min epsilon
我正在创建一个迭代算法(蒙特卡罗方法).该算法在每次迭代时返回一个值,从而创建一个值流.
我需要分析这些值并在说1000返回的值有些时停止算法epsilon.
我决定实现其计算max和min最后的值1000值,然后计算出error使用这个公式(max-min)/min,并把它比作epsilon:error<=epsilon.如果达到此条件,请停止迭代并返回结果.
第一个hare-brained想法是使用a list和appendnew值,计算每次追加后的最后一个值的值max和min值1000.
然后我决定不再保留更多的1000最后价值.所以我记得deque.这是一个非常好的主意,因为在deque对象的两端添加和删除的复杂性是O(1).但是它并没有解决需要在每次迭代中计算min和计算所有最后1000个值的问题max.
然后我记得那里有heapq模块.它使数据保持在每时每刻高效返回最小数据的方式.但我需要最小和最大的.此外,我需要保留元素的顺序,以便我可以保留1000算法的最后返回元素,我不知道如何实现它heapq.
考虑到所有这些想法,我决定在这里问:
如何最有效地解决此任务?