Ruby on rails 从SecureRandom数字生成中排除数字
假设我们有一个随机数生成器,使用这个:Ruby on rails 从SecureRandom数字生成中排除数字,ruby-on-rails,ruby,Ruby On Rails,Ruby,假设我们有一个随机数生成器,使用这个: SecureRandom.random_number(10) 这会给你一个从0到10的随机数 是否可以从中排除该号码?假设是8点 我在想这件事: [SecureRandom.random_number(10)].grep_v(8) 但可能有一种更正确、更优化的方法吗 Ruby 2.7.2 Rails 6.1.2您可以生成最多9个数字,而不是生成最多10个数字,如果结果为8或以上,则添加1: number = SecureRandom.random_nu
SecureRandom.random_number(10)
这会给你一个从0到10的随机数
是否可以从中排除该号码?假设是8点
我在想这件事:
[SecureRandom.random_number(10)].grep_v(8)
但可能有一种更正确、更优化的方法吗
Ruby 2.7.2
Rails 6.1.2您可以生成最多9个数字,而不是生成最多10个数字,如果结果为8或以上,则添加1:
number = SecureRandom.random_number(9)
number += 1 if number >= 8
或者,您可以生成一个有效数字列表,并随机选择其中一个,例如通过:
如果
random\u number
返回8
,您的方法将生成[]
如果您知道需要多少uniq数,:sample
接受一个参数:(1..10)。到a.sample(3)
VALID_NUMBERS = [0, 1, 2, 3, 4, 5, 6, 7, 9]
number = VALID_NUMBERS.sample(random: SecureRandom)