在Julia中生成唯一的随机数

时间:2016-08-16 16:13:53

标签: random numbers julia

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

    body{
    position: relative;
    width:52.5%; /* 1000 px */
    margin-left:auto;
    margin-right:auto;
    border: 1px solid black;
    background-color: white;
}

#aboutMe, #portfolio, #munroAudio, #contactMe, #slider{
    top:60px;
    height:1000px;
    position:relative;  
}

#logo img {
    max-width: 100%; 
    height: auto !important;
}

header, header img, header nav{
    display:block;
    margin-left:auto;
    margin-right:auto; 

}

header{
    height:110px;
}


nav {
    position:relative;
    top:50px;
    width: 100%;
    background: #D24D57;
    color: #fff;
    height:60px;
}


ul {
  list-style: none;
  margin: 0;
}

ul li {
  display: inline-block;
  padding: 20px;
}

.fixed-nav {
  position: fixed;
  width: 52.5%;
  top: 0;
      z-index: 20;
}

.fixed-nav ul li {
  display: inline-block;
  padding: 20px;
}

.fixed-nav ul li:hover {
  background: #E08283;
}

ul li {
  display: inline-block;
  padding: 20px;
}

ul li:hover {
  background: #E08283;
}

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

由于

3 个答案:

答案 0 :(得分:12)

StatsBase中的示例函数具有replace选项。

e.g。

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

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

答案 1 :(得分:9)

简单回答:(以下更全面的解释)

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

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

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

答案 2 :(得分:0)

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

我建议你可以试试这三种方法,找到一种时间成本最低的方法:

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

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