0

如何在 Haskell 中生成随机GLfloat 值?

Random GLfloat 没有实例声明。

4

1 回答 1

2

没有实例的时候,做一个实例。这是他们教给你的第一件事。

有很多方法,但最简单的可能是生成一种足够的分辨率,然后将其转换为 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应该足够了,但是我对浮点的细节还不够精通,无法确定这对所有平台都是正确的。

于 2012-05-03T04:17:07.250 回答