code: def random_word(self, length, prefix=0, start=False, end=False,
                      flatten=False):
          
          if start:
              word = ">"
              length += 1
              return self._extend_word(word, length, prefix=prefix, end=end,
                                       flatten=flatten)[1:]
          else:
              first_letters = list(k for k in self if len(k) == 1 and k != ">")
              while True:
                  word = random.choice(first_letters)
                  try:
                      word = self._extend_word(word, length, prefix=prefix,
                                               end=end, flatten=flatten)
                      return word
                  except GenerationError:
                      first_letters.remove(word[0])
docs: Generate a random word of length from this table.
  
          :param length: the length of the generated word; >= 1;
          :param prefix: if greater than 0, the maximum length of the prefix to
                         consider to choose the next character;
          :param start: if True, the generated word starts as a word of table;
          :param end: if True, the generated word ends as a word of table;
          :param flatten: whether or not consider the table as flattened;
          :return: a random word of length generated from table.
          :raises GenerationError: if no word of length can be generated.