如题
除了以下方法
#1
julia> a = [1; 2; 3; 4]
4-element Array{Int64,1}:
1
2
3
4
julia> using Random
julia> shuffle(a)[1:2]
2-element Array{Int64,1}:
1
3
#2
julia> x1, x2 = rand(a, 2)
2-element Array{Int64,1}:
3
3
julia> while x1 == x2
x1, x2 = rand(a, 2)
end
julia> x1, x2
(2, 4)
还可以这样
julia> using Combinatorics
julia> a=collect(1:4)
4-element Array{Int64,1}:
1
2
3
4
julia> rand(collect(combinations(a,2)))
2-element Array{Int64,1}:
3
4
1 个赞
是能解决, 有点复杂感觉. 就是不知道有没有我现在需求的函数能够直接解决了…
using StatsBase: sample
sample(1:4, 2; replace=false)
Sample without replacement.
好坑人。()
6 个赞
对,我写的那个确实坑,你这个不错,我当时看到选出两个元素,就想到排列组合了,其实应该是抽样,用 Stats 的函数就好。
一种shuffle下标的方式:
using Random
inds = randperm(length(a))[1:2]
a[inds]
但是至少可用,不是吗,就像我写的那个,也超慢,但是可用
Turner
10
我一开始说的方法也能用,就是想找确实存在的轮子,效率也不错的。学习到了