summaryrefslogtreecommitdiffstats
path: root/words.py
diff options
context:
space:
mode:
Diffstat (limited to 'words.py')
-rw-r--r--words.py54
1 files changed, 54 insertions, 0 deletions
diff --git a/words.py b/words.py
new file mode 100644
index 0000000..b3420ab
--- /dev/null
+++ b/words.py
@@ -0,0 +1,54 @@
+#!/usr/bin/env python
+
+import random
+
+wordList = open("words.txt")
+letterNumerators = [[0 for i in range(27)] for i in range(27)]
+letterDenominators = [0 for i in range(27)]
+wordBeginnings = [0 for i in range(27)]
+wordsNum = 0
+
+for line in wordList:
+ line = line.lower()
+ line = line[:-1]
+ acceptable = True
+ for letter in line:
+ if (ord(letter) < 97 or ord(letter) > 122):
+ acceptable = False
+
+ if len(line) < 0:
+ acceptable = False
+ if acceptable:
+ wordsNum += 1
+ wordBeginnings[ord(line[0]) - 96] += 1
+ for i in range(len(line) - 1):
+ letterDenominators[ord(line[i]) - 96] += 1
+ letterNumerators[ord(line[i]) - 96][ord(line[i + 1]) - 96] += 1
+ letterDenominators[ord(line[-1]) - 96] += 1
+ letterNumerators[ord(line[-1]) - 96][0] += 1
+
+
+while True:
+ newWord = ""
+ j = 0
+ number = random.SystemRandom().random() * wordsNum
+ for i in range(len(wordBeginnings)):
+ number -= wordBeginnings[i]
+ if number < 0:
+ newWord += (chr(i + 96))
+ break
+
+ newWordFinished = False
+ while not newWordFinished:
+ number = letterDenominators[ord(newWord[j]) - 96] * random.SystemRandom().random()
+ for i in range(len(letterNumerators[ord(newWord[j]) - 96])):
+ number -= letterNumerators[ord(newWord[j]) - 96][i]
+ if number < 0:
+ if i == 0:
+ newWordFinished = True
+ break
+ j = j + 1
+ newWord += (chr(i + 96))
+ break
+
+ print(newWord)