在Julia中生成唯一的随机数

hax*_*tar 11 random numbers julia

此语句通常可以成功生成3个唯一的随机数,但有时它只生成2个唯一的数字.

rand(1:length(matches), 3)
Run Code Online (Sandbox Code Playgroud)

如何重写这一点,以确保始终生成3个唯一的随机数.(我也愿意使用其他功能等)

谢谢

Ale*_*ley 12

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

例如

using StatsBase
sample(1:10, 3, replace=false)
Run Code Online (Sandbox Code Playgroud)

文档:https://statsbasejl.readthedocs.io/en/latest/


Mic*_*gge 9

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

using StatsBase
MyRand = sample(1:10, 3, replace = false)   
Run Code Online (Sandbox Code Playgroud)

有很多并发症的可能去到这一点.例如,每当绘制随机数时,总会有一些分布来自.如果要绘制许多随机数,那么统计中对此的通常描述就是您从多维分布中绘制.如果您的分布是离散的(即任何特定数字具有被选择的正概率),如果您指定没有两个条目可以彼此相等,则它实际上将是不同的分布.因此,根据您的需要,这可能会相对复杂地相对复杂.例如,如果你想要5个泊松随机变量但是规定没有两个彼此相等 - 在代码中完成这个是相对简单的,但是产生这个的分布的细节更复杂,你绘制的变量将不会更长的标准泊松随机变量.根据您的应用程序,这可能会或可能不重要,您要记住.

但是,在这种情况下,看起来你只是想从一些类别的列表中选择三个随机元素,为每个被选择的元素分配相同的概率,并确保没有元素被选中两次.在这种情况下,sample()StatsBase中的函数将完成这一操作,选择replace = false选项(即"无替换"采样,这意味着一旦选中,您可以从可能结果池中删除一个数字).