我注意到整数rand(x)
在哪里x
给了我一个随机浮点数组.我想知道如何在一定范围内生成一组随机浮点型变量.我尝试使用如下范围:
rand(.4:.6, 5, 5)
Run Code Online (Sandbox Code Playgroud)
我得到:
0.4 0.4 0.4 0.4 0.4
0.4 0.4 0.4 0.4 0.4
0.4 0.4 0.4 0.4 0.4
0.4 0.4 0.4 0.4 0.4
0.4 0.4 0.4 0.4 0.4
Run Code Online (Sandbox Code Playgroud)
如何获得范围而不是范围中的最小数字?
也许更优雅,因为你实际上想从Uniform发行版中采样,你可以使用这个Distribution
包:
julia> using Distributions
julia> rand(Uniform(0.4,0.6),5,5)
5×5 Array{Float64,2}:
0.547602 0.513855 0.414453 0.511282 0.550517
0.575946 0.520085 0.564056 0.478139 0.48139
0.409698 0.596125 0.477438 0.53572 0.445147
0.567152 0.585673 0.53824 0.597792 0.594287
0.549916 0.56659 0.502528 0.550121 0.554276
Run Code Online (Sandbox Code Playgroud)
然后,同样的方法适用于来自其他众所周知或用户定义的分布的采样(只需将分布作为第一个参数rand()
)
您需要一个步骤参数:
rand(.4:.1:.6, 5, 5)
Run Code Online (Sandbox Code Playgroud)
这.1
将为您的范围提供一个步骤,这是浮点数所必需的,而不是递增 1 所必需的。问题是无论隐式精度如何,它都会假设为 1。如果您需要比以下操作更精确的增量:
rand(.4:.0001:.6, 5, 5)
Run Code Online (Sandbox Code Playgroud)
这将为您提供类似于以下内容的结果:
0.4587 0.557 0.586 0.4541 0.4686
0.4545 0.4789 0.4921 0.4451 0.4212
0.4373 0.5056 0.4229 0.5167 0.5504
0.5494 0.4068 0.5316 0.4378 0.5495
0.4368 0.4384 0.5265 0.5995 0.5231
Run Code Online (Sandbox Code Playgroud)