在Ruby中生成n个唯一随机数的列表,你可以使用Ruby内置的Random
模块,结合inject
、partition
和uniq
方法。这里是详细步骤:
inject
方法使用随机值累加得到所需范围,以确保随机数列表中的数字遵循指定的范围。在此示例中,范围是从1到100。partition
方法将生成的随机数列表分成两个部分:一个包含所有相同数值的元素,另一个包含所有不同数值的元素。在Ruby 2.7及更高版本中,你可以改用chunk
方法。uniq
方法去除随机数列表中的重复值,得到唯一随机数列表。示例代码如下:
n = 10 # desired number of unique random numbers
range = 1 .. 100 # the range of random numbers
range_step = range.step
repeated_numbers = 0
while i < n
random_number = range.next
exclusive_random_numbers = range.step.times.map{random_number}.compact
unique_random_numbers = exclusive_random_numbers.uniq
current_repeated_numbers = unique_random_numbers & repeated_numbers
if current_repeated_numbers.empty?
repeated_numbers = i + 1
end
i = i + 1
end
puts "Generated unique random numbers: #{repeated_numbers * range_step}"
这将在Ruby中生成10(或需要的其他数量)个唯一随机数列表。
领取专属 10元无门槛券
手把手带您无忧上云