寻找调试随机程序的一般原则,以及在 Python 中执行此操作的任何具体指南。
例如,考虑以下在跳过列表中的插入实现:
#inserts key into the lowest level list and then promotes it upwards based on coin flips
def insert(self,key):
new_node = SkipListNode()
new_node.val = key
#insert in order in the lowest list
self.orderedInsert(new_node,self.search(key,True))
flip = random.randint(0,1)
level = 0
level_node= new_node
#promote upwards based on coin flips
while flip == 1:
level_up_node = SkipListNode()
level_up_node.val = key
#see if an upper level exists, if not create it
if(len(self.lists)-1<=level):
...
#upper level exists, move back find the first element with an up
#insert new node as it's next
else:
...
...
level +=1
flip = random.randint(0,1)
这insert
取决于随机掷硬币。因此,该函数中的错误变得难以检测,因为它可能会或可能不会出现在每次运行中。在这种情况下,我们如何简化调试?