基于小数位的非确定性(随机)舍入

本文关键字:非确定 确定性 随机 舍入 小数 于小数 | 更新日期: 2023-09-27 18:36:56

我想做这样的事情:

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

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

简单介绍一下背景:我们将其用于基于整数(生命值)计算生命值的游戏,但更准确地根据双倍计算伤害。

基于小数位的非确定性(随机)舍入

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

但是,您正在描述

随机舍入(维基百科)

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

与整数半到偶数一样,此规则基本上没有总体偏差;但它在偶数和奇数q值之间也是公平的。另一方面,它在结果中引入了随机分量;对同一数据执行两次相同的计算可能会产生两种不同的结果。此外,如果人类(而不是计算机或偶然设备)"随机"决定朝哪个方向四舍五入,则对无意识偏见持开放态度。

有点相关:交替打破平局(仍然可以引入偏差,但缺乏随机成分)