我正在try 生成一个完全随机的float
值,这应该很容易.然而,它并不起作用,从表面上看,也许我是第一个遇到这个错误的人?我肯定找不到任何关于这方面的帖子.
此代码:
let min = -Float.greatestFiniteMagnitude
let max = +Float.greatestFiniteMagnitude
let range = min...max
let random = Float.random(in: range)
一直工作到最后一行失败,生成Swift/FloatingPointRandom.swift:162: Fatal error: There is no uniform distribution on an infinite range
然而,范围不应该是无限的.判断操场上的最小和最大值或范围本身,就会发现界限在-3.402823e+38
到3.402823e+38
之间,这两个界限都不是无限的.
这是怎么回事?有没有合适的方法来解决我错过的这个问题?除了以下几点,对于这样一个简单的任务来说,这似乎非常复杂:
let min = Float(0)
let max = Float.greatestFiniteMagnitude
let range = min...max
let signs : [Float] = [-1, 1]
let random = Float.random(in: range) * signs.randomElement()!