1

我想做这样的事情:

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

很难用谷歌搜索它;)是否有任何关于这种舍入机制或名称的文献?

只是一点背景:我们将它用于一个游戏,我们的健康基于整数(生命值),但更准确地计算基于双打的伤害。

4

1 回答 1

2

银行家的四舍五入可能没问题,认为它不是随机的:它只是试图均匀分布偏差,以防输入是某种传播(比如大于 1 的 stddev)

但是,您正在描述

随机舍入(维基百科)

另一种无偏的平局打破方法是随机舍入:如果 y 的小数部分是 0.5,则在 y + 0.5 和 y - 0.5 中随机选择 q,概率相等。

就像四舍五入一样,这条规则基本上没有整体偏差。但在偶数和奇数 q 值之间也是公平的。另一方面,它在结果中引入了一个随机分量;对相同的数据执行两次相同的计算可能会产生两个不同的结果。此外,如果人类(而不是计算机或偶然的设备)“随机”决定朝哪个方向旋转,那么它可能会出现无意识的偏见。

有点相关:交替平局(仍然会引入偏见,但缺少随机成分)

于 2013-10-26T20:11:47.247 回答