如何在Julia中创建一个均匀随机矩阵?

7
我想获取一个矩阵,其值从[-1,2]中均匀随机抽样。
x= rand([-1,2],(3,3))
3x3 Array{Int64,2}:
 -1  -1  -1
  2  -1  -1
 -1  -1  -1

但它只考虑了-1和2,我想要连续的值,例如-0.9、0.75、-0.09、1.80。我该怎么做?

3个回答

17

注意:我在这里假设你正在寻找均匀分布的随机变量。

你也可以使用Distributions包:

## Pkg.add("Distributions") # If you don't already have it installed.
using Distributions
rand(Uniform(-1,2), 3,3)

我相当喜欢 isebarn 的解决方案,因为它让你思考基础概率分布的实际属性。


但是rand(Uniform(0.1,0.3),3,3)对于实数值不起作用!! - vincet
@ahmedmazari,你能提供更多细节吗?对我来说它似乎完全正常。 - Michael Ohlrogge
randn(Uniform(0.1,0.3),3,3)!! 它是否有效?你是否成功地获得了在0.1和0.3之间的正态分布和均匀分布? - vincet
1
您IP地址为143.198.54.68,由于运营成本限制,当前对于免费用户的使用频率限制为每个IP每72小时10次对话,如需解除限制,请点击左下角设置图标按钮(手机用户先点击左上角菜单按钮)。 - DNF
@ahmedmazari 在你的情况下,重新学习一些基础统计/概率理论可能会有所帮助,以更好地理解上下文。以下是几篇维基百科文章,你可能会发现它们很有用:https://en.wikipedia.org/wiki/Probability_distribution https://en.wikipedia.org/wiki/Normal_distribution https://en.wikipedia.org/wiki/Uniform_distribution_(continuous) https://en.wikipedia.org/wiki/Discrete_uniform_distribution - Michael Ohlrogge

9

生成在[a,b]范围内的随机数。

rand() * (b-a) + a

它同样适用于矩阵。

rand(3,3) * (2 - (-1)) - 1
3x3 Array{Float64,2}:
 1.85611   0.456955   -0.0219579
 1.91196  -0.0352324   0.0296134
 1.63924  -0.567682    0.45602  

5
您需要使用一个具有所需步长的FloatRange{Float64}:
julia> rand(-1.0:0.01:2.0, 3, 3)
3x3 Array{Float64,2}:
 0.79  1.73   0.95
 0.73  1.4   -0.46
 1.42  1.68  -0.55

1
我真的应该阅读有关函数的文档,我不敢相信我会错过那个。 - isebarn

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