def gen_rand_box_combo(self, pos_boxes): used_boxes = [] pos_indices = [i for i in range(len(pos_boxes))] random.shuffle(pos_indices) temp = Backpack() temp.reset_boxes() count = 0 index = pos_indices[count] while temp.add_box(pos_boxes[index]): used_boxes.append(pos_boxes[index]) while pos_boxes[index] in used_boxes: count += 1 if count >= len(pos_boxes): return temp.boxes index = pos_indices[count] assert count < len(pos_indices) return temp.boxes