Создание слова из случайного набора конкретных букв - PullRequest
0 голосов
/ 08 июля 2011

Я пытаюсь сгенерировать слово с определенным набором букв.

Первая буква слова должна содержать буквы P, G, T, K, вторая A, E, I, O, U

Я попытался сгенерировать их с помощью кода, но безуспешно. Как только я сохраню все эти случайные буквы как переменные, я соединю их вместе, чтобы получить случайное слово

letter1 = rand(80,84,75,71).chr
letter2 = rand(97,101,105,111,117,121).chr

name = letter1 + letter2 + letter2 + letter1 + letter2

puts name

Ответы [ 2 ]

4 голосов
/ 08 июля 2011
puts 'PGTK'[rand(4), 1] + 'AEIOU'[rand(5), 1]

Для реального удовольствия используйте действующую энтропию, полученную из шума:

def noise_index s
  s[@f.sysread(1).unpack('C').first/256.0*s.length, 1]
end
def run
  open '/dev/random', 'r' do |f|
    @f = f
    100.times do
      puts noise_index('PGTK') + noise_index('AEIOU')
    end
  end
end
2 голосов
/ 08 июля 2011

Если вам нужно только заключительное слово из двух букв:

['PGTK', 'AEIOU'].map { |s| s.chars.to_a.sample }.join

Или, следуя примеру в вашем вопросе:

letter1, letter2 = ['PGTK', 'AEIOU'].map { |s| s.chars.to_a.sample }
name = letter1 + letter2 + letter2 + letter1 + letter2
...