Code archives/Miscellaneous/Random Word Generator

This code has been declared by its author to be Public Domain code.

Download source code

Random Word Generator by Luke1112010
Generate Words!!!
Global g$ = ""
Function getLetter(i%)
	If i% = 1 Then
		a$ = "a"
	ElseIf i% = 2 Then
		a$ = "b"
	ElseIf i% = 3 Then
		a$ = "c"
	ElseIf i% = 4 Then
		a$ = "d"
	ElseIf i% = 5 Then
		a$ = "e"
	ElseIf i% = 6 Then
		a$ = "f"
	ElseIf i% = 7 Then
		a$ = "g"
	ElseIf i% = 8 Then
		a$ = "h"
	ElseIf i% = 9 Then
		a$ = "i"
	ElseIf i% = 10 Then
		a$ = "j"
	ElseIf i% = 11 Then
		a$ = "k"
	ElseIf i% = 12 Then
		a$ = "l"
	ElseIf i% = 13 Then
		a$ = "m"
	ElseIf i% = 14 Then
		a$ = "n"
	ElseIf i% = 15 Then
		a$ = "o"
	ElseIf i% = 16 Then
		a$ = "p"
	ElseIf i% = 17 Then
		a$ = "q"
	ElseIf i% = 18 Then
		a$ = "r"
	ElseIf i% = 19 Then
		a$ = "s"
	ElseIf i% = 20 Then
		a$ = "t"
	ElseIf i% = 21 Then
		a$ = "u"
	ElseIf i% = 22 Then
		a$ = "v"
	ElseIf i% = 23 Then
		a$ = "w"
	ElseIf i% = 24 Then
		a$ = "x"
	ElseIf i% = 25 Then
		a$ = "y"
	ElseIf i% = 26 Then
		a$ = "z"
	EndIf
	g$ = g$+a$
End Function
SeedRnd MilliSecs()
.loop
l% = 0
h% = Input$("Words? - ")
While h% <> l%
l% = l%+1
a% = Rand(1,26)
b% = Rand(1,26)
c% = Rand(1,26)
d% = Rand(1,26)
e% = Rand(1,26)
f% = Rand(1,26)
.loop1
If a% = b% Then
	b% = Rand(1,26)
	Goto loop1
EndIf
If b% = c% Then
	c% = Rand(1,26)
	Goto loop1
EndIf
If c% = d% Then
	d% = Rand(1,26)
	Goto loop1
EndIf
If d% = e% Then
	e% = Rand(1,26)
	Goto loop1
EndIf
If e% = f% Then
	f% = Rand(1,26)
	Goto loop1
EndIf
getLetter(a%)
getLetter(b%)
getLetter(c%)
getLetter(d%)
getLetter(e%)
getLetter(f%)
Print g$
g$ = ""
Wend
Goto loop

Comments

matibee2010
Interesting Luke :)

I hope you take this in good faith, but your coding style is a little "lengthy"...

SuperStrict 

Function GetLetter:String()
	Return Chr( Rand(97,122) )
End Function 

SeedRnd MilliSecs()

Local count% = Input$("Words? - ").ToInt()
Local length% = Input$( "Length? - ").ToInt()

While count
	Local word$ = GetLetter()
	
	For Local t:Int = 2 To length
		Local a$ = GetLetter()
		While( a$ = Mid$( word$, t-1, 1 ) )
			a$ = GetLetter()
		Wend 
		word$ :+ a$
	Next 
	
	Print word$
	count :- 1
Wend


Tell me where to go if you like :)

I'm sure there's more symantics involved with generating real words but this could be great for generating passwords.


Bobysait2010
Is it something to do that ?

SeedRnd MilliSecs()
Local length=Input("length :")
Local NbWords=Input("Nb Words :")
For w=1 To NbWords
	Local word$ = ""
	For c=1 To length
		word=word+Chr(Rand(Asc("a"),Asc("z")))
	Next
	Print word
Next
WaitKey()
End


sure, it is a bit "lengthy" ^^

If you want password, it should be better to randomize with number, and upper/lower chars

Then , to generate words, maybe some traitments could be interesting, like
after a,e,i,o,u,y, always choose some of b,c,d,f,g,h,j,k, etc...


Warner2010
SeedRnd MilliSecs()
Dim m(3)
Dim p$(3, 100)
i = 0
j = 0
Repeat
	Read pq$
	If pq$= "*" Then Exit
	If pq$ <> "-"
		p$(i, j) = pq$
		m(i) = j
		j=j+1
	Else
		i=i+1
		j = 0
	End If
Forever

Write "You, sir, are nothing but a"
s$ = p$(0, Rand(m(0)))
If Instr("haeiouy", Left$(s$, 1)) > 0 Then Write "n " Else Write " "
Write s$
Write p$(1, Rand(m(1)))
Print p$(2, Rand(m(2))) + "!"		
WaitKey
End

Data "br","bl","bw","b","c","ch","d","dr","dw","e","er","el","eg","f","fr","g","gh","gl","h","j","k","kn","l","-"
Data "a","ai","ay","au","e","ea","ee","ei","eo","eu","i","ia","ie","o","oa","oe","oi","oo","ou","u","y","-"
Data "b","d","f","st","n","m","ph","-"
Data "*"



Damien Sturdy2010
It just called me a Kn0b!!!!! hahahah!


_PJ_2010
Warner has the right idea. Ratehr than just spew out individual letters, ideally considerations ought to be made for:

1) Syllables. Each syllable should be applied separately.
2) "Style" of the word (Not sure if there's a correct term for this). i.e. average length, prevalence of vowels or double letters, specific endings (such as 'ing' or 'er' etc.
3) A cleanup process to remive invalid or bad combinations, such as "kk", "bt", "iy" or "hh" etc.
The Replace() function is very useful for this cleanup.

Simple techniques could be to ensure groups of syllables begin or end in vowels/consonants, by placing this in certain orders can make sure that the words re always "readable".

Also, think of 'soft' sounds and 'hard sounds' the syllables create when spoken/written. Some consonants can always follow others, but there are a few consonants that do not.

For example:

(This list is inexhaustive., but should provide a good starting point.)



; Type 1 consonant groups - Must never be used with other consonants - CAN BEGIN OR END THE WORD
Data "b","c","sc","cs","ch","d","dh","dr","","f","g","gh","gr","gl","gn","h","j","jh","ts",,"x","z","sm","kh","st","ps"

; Type 2 consonant groups - Must never be used with other consonants - CANNOT BEGIN THE WORD
Data "ck","cc","dd","gg","ff","ng","tt","ng","nn","mm","xcl","rr","vv","pth","ght","gth","nx","xx","zz","bb","ths","pths","xc","ghts","nst","lst","ll","lls","rls","lv","tts","rbs","rv","nv","nts","dt","dd","rd","ds","ms","sms","ldt","lds","ss","ht","ntr","pp","pt","pst","rs","rts","rps","rfs"

; Type 3 consonant groups - Must never be used with other consonants - CANNOT END THE WORD:
Data "cr","j","str","vv","gr","gl","kn","xcl","xc","br","bl","nj","jh","lv","shr","rv","nv","dr","dw","cl","chr","kr","vh","ht","tr","ntr","q","pr","pst","pl","pf","pk","kp","gh"

; Type 4 Groups - may appear alone or precede type 5
Data "l","s","n","r","w","m"

;Type 5 May only succede type 4 or appear alone. 
Data "p","k","th","ch","qu","ph","d","n","t","s","ths","z","b","ds","ts"

;('Alone' = prefixed or suffixed with vowels)



Code Archives Forum