0

均一な乱数ジェネレータルーチンによって生成された32ビットのunsignedintを自由に使用できます。この数値を[0,1]の範囲の浮動小数点数に変換したいと思います。明らかに、これはunsigned intをUINT_MAXで除算し、除算の前に両方をfloatにキャストすることで最も簡単に実行できます。私が非常に間違っていない限り、そのような分割は私に多くの精度を犠牲にするので理想的ではないと思います。

このアクションはopenCLで実行されるため、中間的に使用できる二重変数はないと想定しています。

より良い方法でフロートを生成する方法はありますか?

前もって感謝します!

トム

4

1 に答える 1

0

私はそうは思わない。

とにかく利用できる精度は32ビットしかないため、(おそらく32ビットの)floatとbackにキャストしても問題ありません。

32ビットの量子化「エラー」が発生しますが、これは元の32ビットのデータ型に基づいており、floatではありません。

于 2012-09-25T16:09:39.183 に答える