我试图让我的代码随机生成一个字母来开始每个单词“zip”、“zap”和“zop”。每次运行代码时都应选择不同的字母,但每个单词都需要以相同的字母开头。
我似乎无法让它重复使用随机字母三次:
def generate
puts "3... 2... 1... IMPROV: (enter any letter)"
text = gets.chomp.upcase
puts text + "IP, " + text + "AP, " + text + "OP!"
puts "My turn!"
yield
puts g_l(1) + "IP, " + "#{g_l(1)}AP, " + "#{g_l(1)}OP!"
end
generate do
def g_l(number)
charset = Array('A'..'Z') - Array["A", "E", "I", "O", "U"]
Array.new(number) { charset.sample } .join
end
end
我的目标:
Run 1: HIP, HAP, HOP!
Run 2: DIP, DAP, DOP!
Run 3: SIP, SAP, SOP!
我得到的:
Run 1: HIP, ZAP COP
Run 2: FIP, WAP, DOP
Run 3: RIP, TAP, BOP
我尝试使用诸如“生成相同的随机字母”、“重复使用随机字母”、“存储随机数”等术语来查找结果,但这些搜索没有帮助。
最佳答案
每次使用 g_l(1)
时都会重新采样
而是保存 char = g_l(1)
并重复使用相同的 char
def generate
puts "3... 2... 1... IMPROV: (enter any letter)"
text = gets.chomp.upcase
puts text + "IP, " + text + "AP, " + text + "OP!"
puts "My turn!"
yield
char = g_l(1)
puts char + "IP, " + "#{char}AP, " + "#{char}OP!"
end
generate do
def g_l(number)
charset = Array('A'..'Z') - Array["A", "E", "I", "O", "U"]
Array.new(number) { charset.sample } .join
end
end
或者让整个事情成为一个你可以调用的函数:
def answer
puts "3... 2... 1... IMPROV: (enter any letter)"
text = gets.chomp[0].upcase # Should they be able to type more than one letter?
charset = Array('A'..'Z') - Array["A", "E", "I", "O", "U"]
puts text + "IP, " + text + "AP, " + text + "OP!"
puts "My turn!"
char = charset.sample
puts char + "IP, " + "#{char}AP, " + "#{char}OP!"
end
answer
关于ruby - 如何重复使用随机字母,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43285788/