hadoop RandomWord 源码

  • 2022-10-20
  • 浏览 (172)

haddop RandomWord 代码

文件路径:/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-applications/hadoop-yarn-applications-catalog/hadoop-yarn-applications-catalog-webapp/src/main/java/org/apache/hadoop/yarn/appcatalog/utils/RandomWord.java

/*
 * Licensed to the Apache Software Foundation (ASF) under one
 * or more contributor license agreements.  See the NOTICE file
 * distributed with this work for additional information
 * regarding copyright ownership.  The ASF licenses this file
 * to you under the Apache License, Version 2.0 (the
 * "License"); you may not use this file except in compliance
 * with the License.  You may obtain a copy of the License at
 *
 *     http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */
package org.apache.hadoop.yarn.appcatalog.utils;

import java.util.Arrays;
import java.util.Random;

/**
 * Random word generator utility.
 */
public final class RandomWord {

  private RandomWord() {
  }

  public static String getNewWord(int wordLength) throws WordLengthException {
    if (wordLength < 3 || wordLength > 15) {
      throw new WordLengthException(
          "Word length error, words must be between 3 and 15 characters long.");
    }
    String theNewWord = "e";
    while (theNewWord.equals("e")) {
      try {
        theNewWord = generateRandomWord(wordLength);
      } catch (Exception e) {
      }
    }
    return theNewWord;
  }

  private static String generateRandomWord(int wordLength) {
    String randomWord;
    // -----------------------------------------------------------------------
    // Bigram source and general concept based on
    // https://github.com/scrollback/scrollback & described in
    // https://www.hackerearth.com/notes/random-pronouncable-text-generator/
    String[] startBiGram = {"TH", "OF", "AN", "IN", "TO", "CO", "BE", "HE",
        "RE", "HA", "WA", "FO", "WH", "MA", "WI", "ON", "HI", "PR", "ST", "NO",
        "IS", "IT", "SE", "WE", "AS", "CA", "DE", "SO", "MO", "SH", "DI", "AL",
        "AR", "LI", "WO", "FR", "PA", "ME", "AT", "SU", "BU", "SA", "FI", "NE",
        "CH", "PO", "HO", "DO", "OR", "UN", "LO", "EX", "BY", "FA", "LA", "LE",
        "PE", "MI", "SI", "YO", "TR", "BA", "GO", "BO", "GR", "TE", "EN", "OU",
        "RA", "AC", "FE", "PL", "CL", "SP", "BR", "EV", "TA", "DA", "AB", "TI",
        "RO", "MU", "EA", "NA", "SC", "AD", "GE", "YE", "AF", "AG", "UP", "AP",
        "DR", "US", "PU", "CE", "IF", "RI", "VI", "IM", "AM", "KN", "OP", "CR",
        "OT", "JU", "QU", "TW", "GA", "VA", "VE", "PI", "GI", "BI", "FL", "BL",
        "EL", "JO", "FU", "HU", "CU", "RU", "OV", "MY", "OB", "KE", "EF", "PH",
        "CI", "KI", "NI", "SL", "EM", "SM", "VO", "MR", "WR", "ES", "DU", "TU",
        "AU", "NU", "GU", "OW", "SY", "JA", "OC", "EC", "ED", "ID", "JE", "AI",
        "EI", "SK", "OL", "GL", "EQ", "LU", "AV", "SW", "AW", "EY", "TY"};
    String[] lookupBiGram = {"TH", "AN", "IN", "IO", "EN", "TI", "FO", "HE",
        "HA", "HI", "TE", "AT", "ER", "AL", "WA", "VE", "CO", "RE", "IT", "WI",
        "ME", "NC", "ON", "PR", "AR", "ES", "EV", "ST", "EA", "IV", "EC", "NO",
        "OU", "PE", "IL", "IS", "MA", "AV", "OM", "IC", "GH", "DE", "AI", "CT",
        "IG", "ID", " OR", "OV", "UL", "YO", "BU", "RA", "FR", "RO", "WH", "OT",
        "BL", "NT", "UN", "TR", "HO", "AC", "TU", "WE", "CA", "SH", "UR", "IE",
        "PA", "TO", "EE", "LI", "RI", "UG", "AM", "ND", "US", "LL", "AS", "TA",
        "LE", "MO", "WO", "MI", "AB", "EL", "IA", "NA", "SS", "AG", "TT", "NE",
        "PL", " LA", "OS", "CE", "DI", "BE", "AP", "SI", "NI", "OW", "SO", "AK",
        "CH", "EM", "IM", "SE", "NS", "PO", "EI", "EX", "KI", "UC", "AD", "GR",
        "IR", "NG", "OP", "SP", "OL", "DA", "NL", "TL", "LO", "BO", "RS", "FE",
        "FI", "SU", "GE", "MP", "UA", "OO", "RT", "SA", "CR", "FF", "IK", "MB",
        " KE", "FA", "CI", "EQ", "AF", "ET", "AY", "MU", "UE", "HR", "TW", "GI",
        "OI", "VI", "CU", "FU", "ED", "QU", "UT", "RC", "OF", "CL", "FT", "IZ",
        "PP", "RG", "DU", "RM", "YE", "RL", "DO", "AU", "EP", "BA", "JU", "RD",
        "RU", "OG", "BR", "EF", "KN", "LS", "GA", "PI", "YI", "BI", "IB", "UB",
        "VA", "OC", "IF", "RN", "RR", "SC", "TC", "CK", "DG", "DR", "MM", "NN",
        "OD", "RV", "UD", "XP", "JE", "UM", "EG", "DL", "PH", "SL", "GO", "CC",
        "LU", "OA", "PU", "UI", "YS", "ZA", "HU", "MR", "OE", "SY", "EO", "TY",
        "UP", "FL", "LM", "NF", "RP", "OH", "NU", "XA", "OB", "VO", "DM", "GN",
        " LD", "PT", "SK", "WR", "JO", "LT", "YT", "UF", "BJ", "DD", "EY", "GG",
        "GL", "GU", "HT", "LV", "MS", "NM", "NV", "OK", "PM", "RK", "SW", "TM",
        "XC", "ZE", "AW", "SM"};
    String[][][] nextCharLookup = {
        {{"E", "A", "I", "O", "R"}, {"E", "O"}},
        {{"D", "T", "Y", "C", "S", "G", "N", "I", "O", "E", "A", "K"},
            {"D", "T", "Y", "S", "G", "O", "E", "A", "K"}},
        {{"G", "T", "E", "D", "S", "C", "A", "I", "K", "V", "U", "N", "F"},
            {"G", "T", "E", "D", "S", "A", "K"}},
        {{"N", "U", "R"}, {"N", "U", "R"}},
        {{"T", "C", "D", "S", "E", "I", "G", "O", "N", "A"},
            {"T", "D", "S", "E", "G", "O", "A"}},
        {{"O", "N", "C", "V", "M", "L", "E", "T", "S", "A", "R", "F"},
            {"N", "C", "M", "L", "E", "T", "S", "A", "R", "F"}},
        {{"R", "U", "O", "L"}, {"R", "U", "O", "L"}},
        {{"R", "N", "Y", "S", "M", "I", "A", "L", "D", "T"},
            {"R", "N", "Y", "S", "M", "A", "L", "D", "T"}},
        {{"T", "D", "V", "N", "S", "R", "P", "L"},
            {"T", "D", "N", "S", "R", "L"}},
        {{"S", "N", "C", "M", "L", "P", "G", "T", "R", "E"},
            {"S", "N", "C", "M", "L", "P", "G", "T", "R", "E"}},
        {{"R", "D", "N", "S", "M", "L", "E", "C", "A"},
            {"R", "D", "N", "S", "M", "L", "E", "A"}},
        {{"I", "E", "T", "H", "U", "O", "C"}, {"E", "H", "O"}},
        {{"E", "S", "I", "A", "N", "Y", "T", "V", "M", "R", "O", "L", "G",
             "F", "C"}, {"E", "S", "A", "N", "Y", "T", "M"}},
        {{"L", "S", "I", "T", "E", "U", "O", "M", "K", "F", "A"},
            {"L", "S", "T", "E", "F"}},
        {{"S", "Y", "R", "T", "N", "L"}, {"S", "Y", "R", "T", "N", "L"}},
        {{"R", "N", "L", "S", "D"}, {"R", "N", "L", "S", "D"}},
        {{"N", "M", "U", "R", "L", "V", "S", "O"},
            {"N", "M", "U", "R", "L", "O"}},
        {{"S", "A", "D", "N", "E", "C", "L", "T", "P", "M", "V", "G", "F",
             "Q"}, {"S", "A", "D", "N", "E", "L", "T", "P", "M"}},
        {{"H", "I", "Y", "E", "S", "T", "A", "U"},
            {"H", "Y", "E", "S", "A"}},
        {{"T", "L", "N", "S"}, {"T", "L", "N", "S"}},
        {{"N", "R", "D", "T", "S", "M", "A"},
            {"N", "R", "D", "T", "S", "M", "A"}},
        {{"E", "I", "H", "T", "R", "O", "L"}, {"E", "H", "T"}},
        {{"S", "E", "T", "G", "A", "D", "L", "C", "V", "O", "I", "F"},
            {"S", "E", "T", "G", "A", "D", "O"}},
        {{"O", "E", "I", "A"}, {"E", "A"}},
        {{"E", "T", "D", "Y", "S", "I", "R", "L", "M", "K", "G", "A", "O",
             "N", "C"}, {"E", "T", "D", "Y", "S", "M", "K", "A", "N"}},
        {{"S", "T", "E", "I", "P", "U", "C"}, {"S", "T", "E"}},
        {{"E", "I"}, {"E"}},
        {{"A", "R", "I", "E", "O", "U", "S"}, {"A", "E", "O", "S"}},
        {{"R", "S", "T", "D", "L", "C", "N", "V", "M", "K"},
            {"R", "S", "T", "D", "L", "N", "M"}},
        {{"E", "I", "A"}, {"E"}},
        {{"T", "O", "I", "E", "A", "U", "R", "H"}, {"T", "E", "H"}},
        {{"T", "W", "R", "U", "N", "M"}, {"T", "W", "R", "U", "N", "M"}},
        {{"T", "L", "R", "N", "S", "G", "P", "B"},
            {"T", "L", "R", "N", "S", "P"}},
        {{"R", "N", "C", "A", "D", "T", "O"}, {"R", "N", "A", "D", "T"}},
        {{"L", "E", "I", "Y", "D", "A"}, {"L", "E", "Y", "D"}},
        {{"T", "H", "S", "I", "E", "C", "M"}, {"T", "H", "S", "E", "M"}},
        {{"N", "T", "L", "K", "D", "S", "I", "G"},
            {"N", "T", "L", "D", "S"}},
        {{"E", "I", "A"}, {"E"}},
        {{"E", "P", "M", "I", "A"}, {"E"}},
        {{"A", "H", "E", "I", "T", "K", "U", "S"},
            {"H", "E", "T", "K", "S"}},
        {{"T"}, {"T"}},
        {{"R", "N", "S", "D", "A", "V", "P", "T", "M", "L", "F"},
            {"R", "N", "S", "D", "A", "P", "T", "M", "L"}},
        {{"N", "D", "R", "L", "T"}, {"N", "D", "R", "L", "T"}},
        {{"I", "E", "U", "S", "O"}, {"E", "S", "O"}},
        {{"H", "N", "I"}, {"H", "N"}}, {{"E"}, {"E"}},
        {{"E", "T", "M", "D", "S", "K", "I", "Y", "L", "G", "A", "R", "N",
             "C"}, {"E", "T", "M", "D", "S", "K", "Y", "A", "N"}},
        {{"E", "I"}, {"E"}},
        {{"D", "T", "A", "L"}, {"D", "T", "L"}}, {{"U"}, {"U"}},
        {{"T", "S", "R", "I"}, {"T", "S", "R"}},
        {{"T", "N", "L", "C", "I", "M", "D", "S", "R", "P", "G", "B"},
            {"T", "N", "L", "M", "D", "S", "R"}},
        {{"O", "E", "A"}, {"E", "A"}},
        {{"M", "U", "V", "P", "N", "W", "S", "O", "L", "D", "C", "B", "A",
             "T", "G"}, {"M", "U", "P", "N", "W", "O", "L", "D", "T"}},
        {{"I", "E", "O", "A"}, {"E", "O"}},
        {{"H", "E", "T", "I"}, {"H", "E"}},
        {{"E", "I", "Y", "O", "A"}, {"E", "Y"}},
        {{"E", "I", "S", "R", "O", "A", "L", "Y", "U", "H"},
            {"E", "S", "O", "A", "Y", "H"}},
        {{"D", "T", "I", "C", "G"}, {"D", "T", "G"}},
        {{"A", "I", "O", "E", "U", "Y"}, {"A", "E", "Y"}},
        {{"U", "W", "S", "R", "L", "O", "M", "T", "P", "N", "D"},
            {"U", "W", "R", "L", "O", "M", "T", "P", "N", "D"}},
        {{"T", "E", "K", "H", "C", "R", "I"}, {"T", "E", "K", "H"}},
        {{"R", "D", "A", "T"}, {"R", "T"}},
        {{"R", "L", "E", "V", "S", "N", "A"},
            {"R", "L", "E", "S", "N", "A"}},
        {{"L", "N", "T", "R", "U", "S", "M", "P"},
            {"L", "N", "T", "R", "S", "M"}},
        {{"E", "O", "I", "A"}, {"E", "O"}},
        {{"E", "N", "T", "S", "I", "A", "Y", "R", "P", "C"},
            {"E", "N", "T", "S", "A", "Y"}},
        {{"S", "N", "D", "T", "W", "V", "R", "L", "F"},
            {"S", "N", "D", "T", "W", "R", "L"}},
        {{"R", "T", "S", "N", "L", "I", "C"}, {"R", "T", "S", "N", "L"}},
        {{"R", "O", "N", "W", "P", "M", "L"},
            {"R", "O", "N", "W", "P", "M", "L"}},
        {{"N", "D", "T", "M", "S", "R", "P", "L", "K"},
            {"N", "D", "T", "M", "S", "R", "P", "L", "K"}},
        {{"N", "T", "S", "C", "K", "G", "E", "F", "Z", "V", "O", "M", "A"},
            {"N", "T", "S", "C", "G", "E", "F", "M", "A"}},
        {{"N", "E", "C", "T", "S", "G", "A", "V", "O", "P", "M", "L", "D",
             "B"}, {"N", "E", "C", "T", "S", "G", "A", "P", "M", "L", "D"}},
        {{"H", "G"}, {"H"}}, {{"E", "P", "I", "O", "A"}, {"E"}},
        {{"E", "I", "S", "A", "U", "O"}, {"E", "S", "O"}},
        {{"E", "T", "I", "S", "L", "H"}, {"E", "T", "S", "H"}},
        {{"Y", "E", "O", "I", "S", "A"}, {"Y", "E", "S"}},
        {{"T", "S", "E", "I", "U", "O", "K", "H"},
            {"T", "S", "E", "O", "H"}},
        {{"T", "N", "L", "I", "R", "K", "B", "G", "C"},
            {"T", "N", "L", "R"}},
        {{"S", "D", "A", "T", "C", "R", "N", "M", "G", "V", "F"},
            {"S", "D", "A", "T", "R", "N", "M"}},
        {{"R", "S", "V", "T", "U", "D"}, {"R", "T", "U", "D"}},
        {{"R", "U"}, {"R", "U"}},
        {{"N", "L", "S", "T", "C", "G"}, {"N", "L", "S", "T", "C", "G"}},
        {{"L", "O", "I"}, {}},
        {{"L", "Y", "I", "E", "F", "O", "A", "T", "S", "P", "D"},
            {"L", "Y", "E", "F", "T", "S", "D"}},
        {{"L", "N", "T"}, {"L", "N", "T"}},
        {{"L", "T", "R", "N", "M"}, {"L", "T", "R", "N", "M"}},
        {{"I", "E", "U", "O", "A"}, {"E", "O"}},
        {{"E", "A", "O"}, {"E", "O"}}, {{"E", "L", "I"}, {"E"}},
        {{"D", "S", "W", "R", "E", "Y", "V", "T", "L", "C", "A"},
            {"D", "S", "W", "R", "E", "Y", "T", "L", "A"}},
        {{"A", "E", "I", "Y", "O"}, {"E", "Y"}},
        {{"T", "N", "R", "S", "C", "Y", "W", "I", "B"},
            {"T", "N", "R", "S", "Y", "W"}},
        {{"T", "E", "S", "I"}, {"T", "E", "S"}},
        {{"S", "N", "R", "D", "P", "L", "I"},
            {"S", "N", "R", "D", "P", "L"}},
        {{"S", "N", "T", "D", "F", "E", "C", "A", "V", "R"},
            {"S", "N", "T", "D", "F", "E", "C", "A", "R"}},
        {{"R", "E", "C", "T", "L", "F", "S", "I", "G", "D", "A"},
            {"R", "E", "T", "L", "S", "D", "A"}},
        {{"P", "E", "A"}, {"E"}},
        {{"O", "N", "D", "T", "S", "G", "C", "B", "V", "M", "A"},
            {"N", "D", "T", "S", "G", "C", "M", "A"}},
        {{"N", "T", "S", "C", "Z", "O", "G", "F"},
            {"N", "T", "S", "C", "G", "F"}},
        {{"N", "E", "S", "I", "A"}, {"N", "E", "S"}},
        {{"N", "M", "U", "L", "C", "R"}, {"N", "M", "U", "L", "R"}},
        {{"E", "I"}, {"E"}},
        {{"E", "A", "I", "O", "U", "R"}, {"E", "O"}},
        {{"E", "S", "P", "O", "B", "A", "I"}, {"E", "S"}},
        {{"E", "P", "I", "A", "S", "M"}, {"E", "S"}},
        {{"D", "N", "L", "S", "R", "E", "C", "T", "V", "A"},
            {"D", "N", "L", "S", "R", "E", "T", "A"}},
        {{"T", "I", "E"}, {"T", "E"}},
        {{"S", "R", "N", "L", "W", "T", "I"}, {"R", "N", "L", "W", "T"}},
        {{"R", "N", "G", "T"}, {"R", "N", "G", "T"}},
        {{"P", "T", "I", "C", "A"}, {"T"}}, {{"N"}, {"N"}},
        {{"H", "T", "K", "E"}, {"H", "T", "K", "E"}},
        {{"E", "I", "Y", "V", "M", "D"}, {"E", "Y"}},
        {{"E", "A", "O"}, {"E", "A"}},
        {{"E", "S", "T", "L", "I"}, {"E", "S", "T"}},
        {{"E", "S", "L", "T", "R", "I"}, {"E", "S"}},
        {{"E", "P", "L"}, {"E"}}, {{"E", "O", "I", "A"}, {"E"}},
        {{"D", "L", "I", "O", "E", "U"}, {"D", "L", "E"}},
        {{"Y", "T", "R", "N"}, {"Y", "T", "R", "N"}},
        {{"Y"}, {"Y"}}, {{"Y", "E"}, {"Y", "E"}},
        {{"W", "N", "O", "S", "C", "V", "U", "T", "R", "P", "G"},
            {"W", "N", "O", "U", "T", "R", "P"}},
        {{"U", "T", "R", "O", "D", "A"}, {"U", "T", "R", "O", "D"}},
        {{"T", "E", "O", "I"}, {"T", "E", "O"}},
        {{"R", "E", "W", "L", "C", "A"}, {"R", "E", "W", "L", "A"}},
        {{"R", "N", "C", "E", "L", "G"}, {"R", "N", "C", "E", "L", "G"}},
        {{"R", "C", "P", "B", "M", "L", "A"}, {"R", "P", "M", "L"}},
        {{"N", "T", "S", "R", "D"}, {"N", "T", "S", "R", "D"}},
        {{"L", "O", "A", "T", "R", "E"}, {"T", "E"}},
        {{"L", "T", "R"}, {"L", "T", "R"}},
        {{"K", "D", "L", "T", "R", "N", "M"},
            {"K", "D", "L", "T", "R", "N", "M"}},
        {{"I", "H", "A", "E", "Y", "U", "S"}, {"H", "A", "E", "Y", "S"}},
        {{"I", "M", "Y", "N", "L"}, {"M", "Y", "N", "L"}},
        {{"E", "I", "O", "A"}, {"E", "A"}}, {{"E", "I"}, {"E"}},
        {{"E"}, {"E"}}, {{"E"}, {"E"}},
        {{"D", "N", "T", "S", "R", "E"}, {"D", "N", "T", "S", "R", "E"}},
        {{"C", "R", "M", "I"}, {"R", "M"}},
        {{"A", "T", "E", "S", "P", "N"}, {"A", "T", "E", "S", "P", "N"}},
        {{"U"}, {}}, {{"T", "F"}, {"T", "F"}},
        {{"T", "I", "H", "E", "Y", "W", "S", "A"},
            {"H", "E", "Y", "S", "A"}},
        {{"S", "E"}, {"S"}},
        {{"S", "N", "L", "C"}, {"S", "N", "L"}},
        {{"S", "N"}, {"S", "N"}}, {{"O", "E", "I"}, {"E"}},
        {{"O", "E"}, {"O", "E"}},
        {{"N", "V", "O", "C"}, {"N", "C"}}, {{"N"}, {"N"}},
        {{"N", "D", "S", "C", "T", "O", "L", "E"},
            {"N", "D", "S", "C", "T", "L", "E"}},
        {{"L", "R", "T", "S"}, {"L", "R", "T", "S"}},
        {{"L", "R", "N"}, {"L", "R", "N"}},
        {{"I", "U", "E"}, {"E"}}, {{"I", "E", "A"}, {"E"}},
        {{"I", "H", "E"}, {"H", "E"}}, {{"H", "E"}, {"H", "E"}},
        {{"F", "T"}, {"F", "T"}}, {{"E", "A", "U", "O"}, {"E"}},
        {{"E"}, {"E"}}, {{"E", "A"}, {"E"}},
        {{"E", "O", "R", "L"}, {"E"}}, {{"E", "A"}, {"E"}},
        {{"C", "S", "R", "A"}, {"S", "R"}},
        {{"A", "S", "I", "E"}, {"S", "E"}},
        {{"A", "S", "D"}, {"A", "S", "D"}},
        {{"Y", "D"}, {"Y", "D"}},
        {{"W", "N", "M", "E"}, {"W", "N", "M"}},
        {{"T", "S"}, {"T", "S"}},
        {{"T", "O", "E", "A"}, {"T", "E"}},
        {{"S", "C", "R", "N", "L"}, {"S", "R", "N", "L"}},
        {{"S"}, {"S"}}, {{"S", "E", "I"}, {"S", "E"}},
        {{"S", "N", "C"}, {"S", "N"}}, {{"R", "I"}, {}},
        {{"O", "I", "E", "A"}, {"E", "A"}},
        {{"O", "F", "U", "T", "E"}, {"F", "T", "E"}},
        {{"O", "E"}, {"O", "E"}}, {{"O"}, {"O"}},
        {{"N", "I", "T", "R"}, {"N", "T", "R"}},
        {{"N", "T", "R", "E", "C"}, {"N", "T", "R", "E", "C"}},
        {{"N"}, {"N"}}, {{"L", "T", "N"}, {"L", "T", "N"}},
        {{"L", "I", "E"}, {"E"}}, {{"L"}, {}},
        {{"L", "T", "R", "N"}, {"L", "T", "R", "N"}},
        {{"K", "I", "E", "C", "A"}, {"K", "E"}},
        {{"I", "F", "E", "T"}, {"F", "E", "T"}},
        {{"I", "E", "M", "A"}, {"E", "A"}},
        {{"I", "E", "Y", "O"}, {"E", "Y"}},
        {{"H", "R", "O", "I", "A"}, {"H"}}, {{"H"}, {"H"}},
        {{"E"}, {"E"}}, {{"E"}, {"E"}},
        {{"E", "O", "I", "A"}, {"E", "A"}},
        {{"E", "U", "I"}, {"E"}}, {{"E", "O", "I"}, {"E", "O"}},
        {{"E", "Y", "U"}, {"E", "Y"}}, {{"E", "I"}, {"E"}},
        {{"E", "I"}, {"E"}}, {{"E"}, {"E"}}, {{"C"}, {}},
        {{"B", "E"}, {"E"}}, {{"A", "R", "I", "E"}, {"E"}},
        {{"Y", "E"}, {"Y", "E"}},
        {{"Y", "O", "I", "E"}, {"Y", "O", "E"}},
        {{"Y", "A"}, {"Y"}}, {{"V", "T", "O"}, {"T", "O"}},
        {{"U", "O", "E"}, {"E"}},
        {{"T", "S", "M", "E", "D"}, {"T", "S", "M", "E"}},
        {{"T", "R", "D"}, {"T", "R", "D"}},
        {{"T", "R", "L", "B"}, {"T", "R", "L"}},
        {{"T", "R", "L"}, {"T", "R", "L"}}, {{"T"}, {"T"}},
        {{"T"}, {"T"}},
        {{"S", "R", "N", "M"}, {"S", "R", "N", "M"}},
        {{"S"}, {"S"}}, {{"S"}, {"S"}}, {{"S"}, {"S"}},
        {{"R", "P"}, {"R", "P"}}, {{"P"}, {}}, {{"P", "O"}, {}},
        {{"O", "E"}, {"E"}}, {{"O"}, {}}, {{"O"}, {}},
        {{"O"}, {}}, {{"N"}, {}}, {{"M"}, {"M"}},
        {{"M"}, {"M"}}, {{"L"}, {}}, {{"L"}, {"L"}},
        {{"I"}, {}}, {{"I"}, {}}, {{"I", "E"}, {"E"}},
        {{"I"}, {}}, {{"I", "E"}, {"E"}}, {{"I"}, {}},
        {{"H"}, {}}, {{"H", "E"}, {"H", "E"}}, {{"H"}, {"H"}},
        {{"F"}, {"F"}}, {{"E"}, {}}, {{"E"}, {"E"}},
        {{"E"}, {}}, {{"E"}, {"E"}}, {{"E", "A"}, {"E"}},
        {{"E"}, {"E"}}, {{"E"}, {"E"}}, {{"E"}, {"E"}},
        {{"E"}, {"E"}}, {{"E"}, {"E"}}, {{"E"}, {"E"}},
        {{"E"}, {"E"}}, {{"E"}, {"E"}}, {{"E"}, {"E"}},
        {{"E"}, {"E"}}, {{"E"}, {"E"}}, {{"E"}, {"E"}},
        {{"D"}, {"D"}}, {{"A"}, {}}, {{"A"}, {}}};
    // ------------------------------------------------------------------------
    randomWord = startBiGram[indexGenerator(startBiGram.length)];
    int flag = 0;
    int count = 0;
    String previousWord;
    while (randomWord.length() != wordLength) {
      previousWord = randomWord;
      randomWord = addCharacter(startBiGram, wordLength, randomWord,
          lookupBiGram, nextCharLookup, flag);
      if (previousWord.equals(randomWord)) {
        count++;
      } else {
        flag = 0;
      }
      if (count == 5) {
        flag = 1;
        count++;
      } else if (count == 20) {
        randomWord = startBiGram[indexGenerator(startBiGram.length)];
        count = 0;
      }
    }
    return randomWord;
  }

  private static String addCharacter(String[] startBiGram, int desiredLength,
      String currentWord, String[] lookupBiGram, String[][][] nextCharLookup,
      int flag) {
    int mainIndex = getLookupIndex(currentWord, lookupBiGram);
    int type = 0;
    if (currentWord.length() == (desiredLength - 1)) {
      type = 1;
    }
    while (mainIndex < 0 || mainIndex > 263
        || nextCharLookup[mainIndex][type].length <= 0) {
      if (currentWord.length() == 2) {
        return startBiGram[indexGenerator(startBiGram.length)];
      }
      if (flag == 1) {
        currentWord = backtrack(currentWord, 2);
        flag = 0;
      } else {
        currentWord = backtrack(currentWord, 1);
      }
      mainIndex = getLookupIndex(currentWord, lookupBiGram);
      if (type == 1) {
        type = 0;
      }
    }
    String updatedWord = currentWord
        + getNextCharacter(type, mainIndex, nextCharLookup);
    return updatedWord;
  }

  private static int indexGenerator(int arrayLength) {
    int theIndex;
    Random generator = new Random();
    theIndex = generator.nextInt(arrayLength);
    return theIndex;
  }

  private static String getNextCharacter(int type, int mainIndex,
      String[][][] theCharacterVault) {
    String nextChar;
    int i = indexGenerator(theCharacterVault[mainIndex][type].length);
    nextChar = theCharacterVault[mainIndex][type][i];
    return nextChar;
  }

  private static String backtrack(String theWord, int numberChars) {
    theWord = theWord.substring(0, theWord.length() - numberChars);
    return theWord;
  }

  private static int getLookupIndex(String theWord, String[] lookupArray) {
    String lookupCharacters = theWord.substring(theWord.length() - 2);
    int lookupIndex = Arrays.asList(lookupArray).indexOf(lookupCharacters);
    return lookupIndex;
  }
}

相关信息

hadoop 源码目录

相关文章

hadoop WordLengthException 源码

hadoop package-info 源码

0  赞