1

私はこのようなことをしたい:

return Utils.RandomDouble() < value - Math.Floor(value) : (int)Math.Floor(value) : (int)Math.Ceil(value);

グーグルするのは難しいです;)そのような丸めメカニズムまたはその名前についての文献はありますか?

ほんの少しの背景: 整数 (ヒットポイント) に基づいてヘルスを持っているゲームに使用しますが、より正確にするために倍数に基づいてダメージを計算します。

4

1 に答える 1

2

バンカーの丸めは、ランダムではないと考えても問題ありません。入力がある程度分散している場合 (stddev が 1 より大きいとします)、偏差を均一に分散しようとします。

しかし、あなたは説明しています

確率的丸め(WikiPedia)

もう 1 つの偏りのないタイブレーク方法は、確率的丸めです。y の小数部が .5 の場合、q を y + 0.5 と y − 0.5 の中からランダムに選択します。確率は同じです。

半分を偶数に丸めるのと同様に、このルールには本質的に全体的な偏りがありません。しかし、偶数と奇数の q 値の間でも公平です。一方、結果にランダムなコンポーネントが導入されます。同じデータに対して同じ計算を 2 回実行すると、2 つの異なる結果が生じる場合があります。また、人間 (コンピューターや偶然のデバイスではなく) がどちらの方向に丸めるかを「ランダムに」決定している場合、無意識の偏見にさらされます。

多少の関連: 交互のタイブレーク (バイアスを導入する可能性はありますが、ランダムな要素はありません)

于 2013-10-26T20:11:47.247 に答える