Challenge: 
Winner?: 
No
Code Snippet: 
randomize timer()
sync on
sync rate 0
sync

dim vow$(5) as string
dim con$(6,6) as string
dim name$(100)

for t=1 to 5
 read a$
 vow$(t)=a$
next t

for t=1 to 6
 for x=1 to 6
  read a$
  con$(t,x)=a$
 next x
next t

for n=1 to 100
 ` n=name number

l=rnd(5)+4
 ` l=name length

cv=1
if rnd(3)=2 then cv=-1
 ` cv=consonant/vowel : 1=c, -1=v

  ` here is where actual name creation happens:
a$=""
for t=1 to l

select cv

case -1
a$=a$+vow$(rnd(4)+1)
endcase

case 1

 repeat

a=(t>1 and t<l)
x=rnd(18+a)+1
 ` x is the random determiner 1-20
y=0
z=0
 ` y is which consonant group, z is how many valid members it has.

if x<10
 y=1
 z=5
 exit
endif

if x>9 and x<15
 y=2
 z=5
 exit
endif

if x>14 and x<18
 y=3
 z=5
 exit
endif

if x=18
 y=4
 z=4
 exit
endif

if x=19
 y=5
 z=6
 exit
endif

if x=20
 y=6
 z=5
 exit
endif

until z>0

a$=a$+con$(y,rnd(z-1)+1)

endcase

endselect

 ` this way, we go from vowel to consonant, no matter what we are on currently
cv=-cv

` there's a 25% chance a word will end in a double vowel.
if t+1=l
 if cv=1
  if rnd(3)=0
   cv=-1
  endif
 endif
endif

next t

name$(n)=a$

next n


for t=1 to 20
 for x=0 to 4
  text x*100,t*20,name$(t+x*20)
 next x
next t

text 0,440,"if you don't want this saved as a file, hit [ESC]. otherwise, hit any key."
sync
wait key

open to write 1,"namegen"+str$(int(timer()/98765))+".txt"
 for n=1 to 100
  write string 1,name$(n)
 next n
close file 1


data "a","e","i","o","u"
data "r","s","t","l","n","-"
data "b","c","d","m","y","-"
data "f","g","h","k","p","-"
data "st","th","ph","sh","-","-"
data "qu","x","z","j","w","v"
data "nn","pp","ss","rr","gg","-"