Random Julia中唯一随机数的生成

Random Julia中唯一随机数的生成,random,numbers,julia,Random,Numbers,Julia,此语句通常成功地生成3个唯一的随机数,但有时仅生成2个唯一的随机数 rand(1:length(matches), 3) 我如何重写它,以确保始终生成3个唯一的随机数。 (我也愿意使用其他功能等) 谢谢简单的回答:(下面是更完整的解释) 这里面有很多复杂因素。例如,每当绘制随机数时,总是会绘制一些分布。如果你画的是许多随机数,那么在统计学中通常的描述是,你画的是多维分布。如果您的分布是离散的(即,任何特定的数字都有被选择的正概率),那么如果您指定没有两个条目可以彼此相等,那么它实际上将是一个不

此语句通常成功地生成3个唯一的随机数,但有时仅生成2个唯一的随机数

rand(1:length(matches), 3)
我如何重写它,以确保始终生成3个唯一的随机数。 (我也愿意使用其他功能等)

谢谢

简单的回答:(下面是更完整的解释)

这里面有很多复杂因素。例如,每当绘制随机数时,总是会绘制一些分布。如果你画的是许多随机数,那么在统计学中通常的描述是,你画的是多维分布。如果您的分布是离散的(即,任何特定的数字都有被选择的正概率),那么如果您指定没有两个条目可以彼此相等,那么它实际上将是一个不同的分布。因此,根据您的具体需求,这可能会很快变得相对复杂。例如,如果您想要5个泊松随机变量,但规定两个变量都不相等,则在代码中实现这一点相对简单,但产生这一点的分布细节更为复杂,您绘制的变量将不再是标准泊松随机变量。根据您的应用程序,这可能对您来说很重要,也可能不重要


但是,在本例中,看起来您只是想从某种类型的列表中选择三个随机元素,为每个被选择的元素分配相等的概率,并确保没有元素被选择两次。在这种情况下,StatsBase中的
sample()
函数将执行此操作,选择
replace=false
选项(即采样“不替换”意味着您在选择一个数字后从可能的结果池中删除该数字).

StatsBase中的示例函数有一个
replace
选项

e、 g


这里的文档:

嗯,这取决于长度(匹配项)的数量

我建议您可以尝试以下三种方法,以找到时间成本最低的方法:

    n = length(matches)
    using Random
    shuffle(1:n)[1:3]
    randperm(n)[1:3]

    using StatsBase
    sample(1:n, 3, replace=false)

仅供参考,理想情况下,您不应使用问题中未定义的变量(即匹配项)。在这里没什么大不了的。回答:
using StatsBase
sample(1:10, 3, replace=false)
    n = length(matches)
    using Random
    shuffle(1:n)[1:3]
    randperm(n)[1:3]

    using StatsBase
    sample(1:n, 3, replace=false)