docs: def random_init_mapping(candidate_mapping):
      """
      Generate a random node mapping.
      Args:
          candidate_mapping: candidate_mapping: candidate node match list
      Returns:
          randomly-generated node mapping between two AMRs
  
      """
      # if needed, a fixed seed could be passed here to generate same random (to help debugging)
      random.seed()
      matched_dict = {}
      result = []
      for c in candidate_mapping:
          candidates = list(c)
          if not candidates:
              # -1 indicates no possible mapping
              result.append(-1)
              continue
          found = False
          while candidates:
              # randomly generate an index in [0, length of candidates)
              rid = random.randint(0, len(candidates) - 1)
              candidate = candidates[rid]
              # check if it has already been matched
              if candidate in matched_dict:
                  candidates.pop(rid)
              else:
                  matched_dict[candidate] = 1
                  result.append(candidate)
                  found = True
                  break
          if not found:
              result.append(-1)
      return result