如何在Julia中生成[-1,1]范围内的实数随机数?
生成[-1,1]范围内的实数随机数(Julia)
你的代码报错是因为rand的参数用法完全错了——rand(Float16, [-1,1], 1)是试图从[-1,1]这个整数数组里随机抽取1个Float16类型的元素,这不仅不是你要的连续实数范围,而且参数顺序也不符合Julia的rand方法签名,所以触发了MethodError。
下面是两种正确的实现方式:
方法一:线性变换(无需额外包)
Julia默认的rand()函数生成的是[0,1)范围内的随机数,我们可以通过简单的线性变换把它映射到[-1,1]:
- 生成单个
Float16随机数:2rand(Float16) - 1 - 生成n个(比如5个)
Float16随机数:2rand(Float16, 5) - 1
方法二:使用Distributions包(更直观)
如果你需要更清晰地表达分布范围,可以用Distributions包的Uniform分布:
- 先安装并导入包(第一次用需要安装):
using Pkg Pkg.add("Distributions") using Distributions - 生成单个
Float16随机数:rand(Float16, Uniform(-1, 1)) - 生成n个随机数:
rand(Float16, Uniform(-1, 1), 3)
内容的提问来源于stack exchange,提问作者mistoffelees_
相关产品推荐
相关产品推荐

