code: @Nonnull
      public static <I> CompactDFA<I> randomICDFA(Random rand,
                                                  @Nonnegative int numStates,
                                                  Alphabet<I> inputs,
                                                  boolean minimize) {
          CompactDFA<I> dfa = new RandomICAutomatonGenerator<Boolean, Void>().withStateProperties(Random::nextBoolean)
                                                                             .generateICDeterministicAutomaton(numStates,
                                                                                                               inputs,
                                                                                                               new CompactDFA.Creator<>(),
                                                                                                               rand);
          if (minimize) {
              dfa = DFAs.minimize(dfa);
          }
          return dfa;
      }
docs: Randomly generates an initially connected DFA (ICDFA), i.e., a DFA where all states are reachable from the
  initial state.
  
  @param rand
  the randomness source
  @param numStates
  the number of states of the generated automaton
  @param inputs
  the input alphabet
  @param minimize
  determines whether or not the DFA will be minimized before being returned. Note that if {@code true} is
  passed for this parameter, the resulting automaton might have a {@link Automaton#size() size} less than
  {@code numStates}
  
  @return a randomly generated ICDFA