【问题标题】:Julia : generating unique random integer arrayJulia:生成唯一的随机整数数组
【发布时间】:2016-07-03 00:45:39
【问题描述】:

我正在尝试创建 10 个元素的唯一随机整数数组。但是我无法创建具有唯一值的数组。 Julia 中有没有类似 Pythons sample function 的东西?

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

谢谢。

【问题讨论】:

    标签: random integer julia random-sample


    【解决方案1】:

    StatsBase 中有一个sample 函数:

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

    这将从 1:100 抽取长度为 10 的样本,无需替换。

    【讨论】:

    • 如果您想创建一个矩阵(A)而不是向量(本例中为 a),假设为 5 列。有没有办法做到这一点?比如:A = sample(1:100, 10, 5, replace = false)
    • 我认为采样矩阵存在一些问题。但是你总是可以sample 一个维度为 m*n 的向量,然后 reshape 将它转换成一个 (m, n) 矩阵。
    【解决方案2】:

    如果性能不是问题(即样本范围不是太大,或者样本计数接近样本范围),并且无论出于何种原因您不想使用额外的包,请尝试:

    a = randperm(100)[1:10]

    【讨论】:

      【解决方案3】:

      独特的(itr[, dim])

      返回一个仅包含可迭代 itr 的唯一元素的数组

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

      设置()

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

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

      【讨论】:

      • 这不能保证运行没有错误。此外,对于某些输入来说,这可能是非常不可能的。
      猜你喜欢
      • 2016-12-23
      • 2010-12-09
      • 1970-01-01
      • 1970-01-01
      • 2017-06-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-07-20
      相关资源
      最近更新 更多