在 Julia 中生成范围内的随机整数
Posted
技术标签:
【中文标题】在 Julia 中生成范围内的随机整数【英文标题】:Generating a random integer in range in Julia 【发布时间】:2014-08-11 04:31:15 【问题描述】:我正在从 MATLAB 迁移到 Julia,并尝试在 1:n
范围内生成一个随机整数。
对于n < 21
,
rand(r[1:n])
有效。
但是对于n > 20
,例如rand(r[1:21])
,我收到以下消息:
ERROR: BoundsError() in getindex at range.jl:121
【问题讨论】:
什么是r
?也许是一个 20 元素的向量?如果我理解正确,rand(1:n)
应该是你所需要的。
什么是r
?试试rand(1:21)
。
【参考方案1】:
您可以将范围作为rand
的第一个参数,如rand(1:n)
:
julia> rand(1:10)
7
julia> rand(1:10,10,10)
10x10 ArrayInt64,2:
10 2 5 8 5 5 3 7 1 3
5 1 4 2 4 4 1 6 6 9
8 1 3 9 4 8 7 8 7 10
3 8 1 5 7 9 7 8 10 7
5 8 5 6 6 2 2 7 4 3
10 4 8 8 10 5 1 10 5 1
6 1 8 1 6 5 7 10 6 10
5 10 2 5 4 5 4 1 3 9
5 4 6 4 4 1 7 8 1 5
10 2 6 4 3 10 7 3 8 7
通用rand
函数的第一个参数通常给出“要从中采样的东西”,可以是值范围或Distributions.jl 中定义的分布对象。
【讨论】:
rand(S)
是否对S
使用均匀抽样或其他概率分布?我的意思是,如果我想生成统一的随机整数,我通常会使用rand(Uniform(1, n))
,然后我会应用ceil(Int, ...)
或floor(Int, ...)
。但我认为写rand(1:n)
更正确如果采样是统一完成的。以上是关于在 Julia 中生成范围内的随机整数的主要内容,如果未能解决你的问题,请参考以下文章