此声明通常可以成功生成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个唯一的随机数。 (我也愿意使用其他功能等)
由于
答案 0 :(得分:12)
StatsBase中的示例函数具有replace
选项。
e.g。
using StatsBase
sample(1:10, 3, replace=false)
答案 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)