如何在 Haskell 中生成随机GLfloat 值?
Random GLfloat 没有实例声明。
没有实例的时候,做一个实例。这是他们教给你的第一件事。
有很多方法,但最简单的可能是生成一种足够的分辨率,然后将其转换为 GLfloat:
instance Random GLfloat where
random g =
let f :: Double
(f,g2) = random g
in (fromRational (toRational f), g2)
Double
应该足够了,因为这是一个 64 位浮点值,而GLFloat
(包装CFloat
)是一个 32 位浮点数。 Float
应该足够了,但是我对浮点的细节还不够精通,无法确定这对所有平台都是正确的。