这就是我目前的情况:

myArray.map!{ rand(max) }

然而,很明显,有时列表中的数字并不是唯一的.我如何确保我的列表只包含唯一的数字,而不必创建一个更大的列表,然后从中 Select n个唯一的数字?

Edit:

推荐答案

这使用Set:

require 'set'

def rand_n(n, max)
    randoms = Set.new
    loop do
        randoms << rand(max)
        return randoms.to_a if randoms.size >= n
    end
end

Ruby相关问答推荐

类似于模块的 attr_accessor 和 attr_reader 的东西?

用函数组合枚举器的Ruby方法

如何在 rspec 中使用 `eq` 匹配器和 `hash_include` 匹配器来获取哈希数组

Ruby 符号到类

Ruby 相当于 Groovy 的 Elvis (?:) 运算符?

在 Ruby 中覆盖 == 运算符

为什么我们要在 Ruby 的类中放置一个模块?

Ruby:从字节创建一个字符串

按键对哈希进行分组并对值求和

Ruby 是否有任何数字格式化类?

Ruby 的 File.open 给出没有这样的文件或目录 - text.txt (Errno::ENOENT)错误

在 Ruby 中重写 to_s 方法不好吗?

在 Ruby 中获取本月的最后一天

to_proc 方法是什么意思?

判断ruby中的字符长度

Ruby 将 CSV 文件读取为 UTF-8 和/或将 ASCII-8Bit 编码转换为 UTF-8

如何在 gemspec 中指定最低 Ruby 版本?

在 Ruby 中使用元组?

如何解决/usr/bin/env: ruby​​_executable_hooks: No such file or directory?

如何在文件夹及其所有子文件夹中搜索特定类型的文件