有很多方法可以對此進行建模。一種方法就像您所描述的那樣,使用多維數組,其中每個索引是鏈中的以下字符,最終結果是計數。
# Two character sample:
int counts[][] = new int[26][26]
# ... initialize all entries to zero
# 'a' => 0, 'b' => 1, ... 'z' => 25
# For example for the string 'apple'
# Note: I'm only writing this like this to show what the result is, it should be in a
# loop or function ...
counts['a'-'a']['p'-'a']++
counts['p'-'a']['p'-'a']++
counts['p'-'a']['l'-'a']++
counts['l'-'a']['l'-'e']++
然後隨機生成名稱您也要算總結果的數目爲給定的字符(例如:2分的結果對於前面例子中的「p」),並選擇一個加權隨機數爲可能的結果的一個。
對於較小的尺寸(比如最多4個字符)應該可以正常工作。對於任何更大的事情,您可能會開始遇到內存問題,因爲(假設您使用A-Z)26^N個條目用於N長度鏈。
我寫了類似於幾年前的東西。我想我使用維基百科的隨機頁面來爲種子數據生成權重。