从随机的特定字母集创建单词

时间:2011-07-07 20:05:51

标签: ruby random generator letters

我正在尝试使用一组特定字母生成一个单词。

单词的第一个字母必须包含字母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 个答案:

答案 0 :(得分:4)

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

答案 1 :(得分:2)

如果你只需要两个字母的最后一个字:

['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