我如何从 Ruby 中的数组中随机 return 一个元素
How do I randomly return an element from an array in Ruby
我想 select 从数组列表中随机取一个名字,然后以大写或小写形式显示
例如姓名= ["James", "John", "Jane"]
输出应为:JOHN 或 john 或 jane 或 JAMES 或 JANE 或 james
请帮忙!
我试过使用数组中的 selects 的 .sample() 命令。另外,我知道 .upcase() 和 .lowercase(),现在的问题是如何将这些整个方法组合在一起以获得想要的结果,即 select 数组的随机名称然后列表以大写或小写显示。
def random_case(*names)
names= ["James", "John", "Jane"]
names.sample { |names| names.upcase names.downcase }
puts "Hello #{names}! How are you today?"
end
random_case()
我希望输出是 JOHN 或 john 或 jane 或 JAMES 或 JANE 或 james - 随机
试试这个
def random_case(names)
names.flat_map{|name| [name.upcase, name.downcase, name.capitalize]}.sample
end
names= ["James", "John", "Jane"]
puts random_case names
我认为代码很容易理解。有什么麻烦吗?发表评论让我知道
我会从:
开始
def random_case(*names)
name = names.sample # pick a random name
[true, false].sample ? name.upcase : name.downcase # return name with random format
end
random_case("James", "John", "Jane")
#=> "JAMES"
random_case("James", "John", "Jane")
#=> "john"
你可以这样做。
names= ["James", "John", "Jane"]
random = [names.sample.upcase, names.sample.downcase].sample
puts "Hello #{random}! How are you today?"
我会写 两个 方法。一个用于从名称列表中返回随机名称:
def random_name(*names)
names.sample
end
另一个用于更改给定名称的大小写:(rand < 0.5
有 50% 的机会是 true
)
def random_case(name)
if rand < 0.5
name.upcase
else
name.downcase
end
end
然后结合两者:
5.times do
puts random_case(random_name("James", "John", "Jane"))
end
输出:
JOHN
JOHN
jane
JAMES
james
如果您不喜欢 rand < 0.5
方法,您也可以将两个变体放入一个数组中并随机选择一个:
def random_case(name)
[name.upcase, name.downcase].sample
end
或者您可以将方法名称 :upcase
和 :downcase
放在一个数组中,随机选择其中一个并使用 public_send
调用该方法:
def random_case(name)
name.public_send([:upcase, :downcase].sample)
end
我想 select 从数组列表中随机取一个名字,然后以大写或小写形式显示
例如姓名= ["James", "John", "Jane"] 输出应为:JOHN 或 john 或 jane 或 JAMES 或 JANE 或 james
请帮忙!
我试过使用数组中的 selects 的 .sample() 命令。另外,我知道 .upcase() 和 .lowercase(),现在的问题是如何将这些整个方法组合在一起以获得想要的结果,即 select 数组的随机名称然后列表以大写或小写显示。
def random_case(*names)
names= ["James", "John", "Jane"]
names.sample { |names| names.upcase names.downcase }
puts "Hello #{names}! How are you today?"
end
random_case()
我希望输出是 JOHN 或 john 或 jane 或 JAMES 或 JANE 或 james - 随机
试试这个
def random_case(names)
names.flat_map{|name| [name.upcase, name.downcase, name.capitalize]}.sample
end
names= ["James", "John", "Jane"]
puts random_case names
我认为代码很容易理解。有什么麻烦吗?发表评论让我知道
我会从:
开始def random_case(*names)
name = names.sample # pick a random name
[true, false].sample ? name.upcase : name.downcase # return name with random format
end
random_case("James", "John", "Jane")
#=> "JAMES"
random_case("James", "John", "Jane")
#=> "john"
你可以这样做。
names= ["James", "John", "Jane"]
random = [names.sample.upcase, names.sample.downcase].sample
puts "Hello #{random}! How are you today?"
我会写 两个 方法。一个用于从名称列表中返回随机名称:
def random_name(*names)
names.sample
end
另一个用于更改给定名称的大小写:(rand < 0.5
有 50% 的机会是 true
)
def random_case(name)
if rand < 0.5
name.upcase
else
name.downcase
end
end
然后结合两者:
5.times do
puts random_case(random_name("James", "John", "Jane"))
end
输出:
JOHN
JOHN
jane
JAMES
james
如果您不喜欢 rand < 0.5
方法,您也可以将两个变体放入一个数组中并随机选择一个:
def random_case(name)
[name.upcase, name.downcase].sample
end
或者您可以将方法名称 :upcase
和 :downcase
放在一个数组中,随机选择其中一个并使用 public_send
调用该方法:
def random_case(name)
name.public_send([:upcase, :downcase].sample)
end