Julia: 生成唯一的随机整数数组

14

我试图创建一个由10个独特的随机整数组成的数组。然而,我无法创建具有唯一值的数组。Julia 中是否有类似 Python sample function 的功能?

numbers = zeros(Array(Int64, 10))
rand!(1:100, numbers)

谢谢。

3个回答

21

StatsBase中有一个sample函数:

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

这将从1:100中不重复地抽取长度为10的样本。


1
如果您想创建一个矩阵(例如_A_),而不是一个向量(在此示例中为_a_),并且该矩阵有5列,该怎么办?是否有一种方法可以实现这一点?类似于:A = sample(1:100, 10, 5, replace = false) - godines
1
我认为采样矩阵存在一些问题。但是你可以始终对一个m*n维的向量进行“采样”,然后将其“reshape”成一个(m, n)矩阵。 - amrods

8
如果性能不是问题(即样本范围不太大,或样本数量接近样本范围),并且出于某种原因您不想使用额外的软件包,可以尝试以下方法:
``` a = randperm(100)[1:10] ```

1

unique(itr[, dim])

返回一个数组,其中仅包含可迭代对象 itr 的唯一元素。

unique([rand(1:100) for r in 1:20])[1:10]

Set()

Set(集合)是一个元素的集合,就像数组或字典一样,但没有重复元素。

{rand(1:100) for r in 1:20}[1:10]

1
这并不保证能够无错误运行。对于某些输入,它也可能非常不可行。 - reschu

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接