确保不选择不存在的项目的适当方法是什么?
icons = %w[asterisk star arrow]
random = rand(icons.length)
或
icons = %w[asterisk star arrow]
random = rand(icons.length -1)
答案 0 :(得分:21)
如何使用Array#sample
[1, 2, 3].sample(1)
示例→obj
样本(随机:rng)→obj
sample(n)→new_ary
sample(n,random:rng)→new_ary
从数组中选择一个随机元素或n个随机元素。通过在数组中使用随机和唯一索引来选择元素,以确保元素不会重复,除非数组已包含重复元素。如果数组为空,则第一个表单返回nil,第二个表单返回一个空数组 如果给出rng,它将用作随机数生成器。
(假设你对元素而不是索引更感兴趣)
答案 1 :(得分:1)
这将是第一个。
icons = %w[asterisk star arrow]
random = rand(icons.length)
如文件中所述:
当参数是Integer或Bignum时,它返回一个大于或等于零且小于参数的随机整数。
因此,如果数组由10个元素(0 ... 9)组成,则rand(10)应返回0到9之间的数字。
答案 2 :(得分:0)
icons = %w[asterisk star arrow]
puts icons.sample