code: def get_random_utterances_from_corpus(candidate_dialog_paths, rng, utterances_num=9, min_turn=3, max_turn=20):
      
      utterances = []
      dialogs_num = len(candidate_dialog_paths)
  
      for i in xrange(0, utterances_num):
          # sample random dialog
          dialog_path = candidate_dialog_paths[rng.randint(0, dialogs_num - 1)]
          # load the dialog
          dialog = translate_dialog_to_lists(dialog_path)
  
          # we do not count the last  _dialog_end__ urn
          dialog_len = len(dialog) - 1
          if(dialog_len < min_turn):
              print "Dialog {} was shorter than the minimum required lenght {}".format(dialog_path, dialog_len)
              exit()
          # sample utterance, exclude the last round that is always "dialog end"
          max_ix = min(max_turn, dialog_len) - 1
  
          # this code deals with corner cases when dialogs are too short
          if min_turn - 1 == max_ix:
              turn_index = max_ix
          else:
              turn_index = rng.randint(min_turn, max_ix)
  
          utterance = singe_user_utterances_to_string(dialog[turn_index])
          utterances.append(utterance)
      return utterances
docs: Sample multiple random utterances from the whole corpus.
      :param candidate_dialog_paths:
      :param rng:
      :param utterances_num: number of utterances to generate
      :param min_turn: minimal index of turn that the utterance is selected from
      :return: