Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/300.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 基于小数位的非确定性(随机)舍入_C#_Rounding - Fatal编程技术网

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

C# 基于小数位的非确定性(随机)舍入,c#,rounding,C#,Rounding,我想这样做: return Utils.RandomDouble() < value - Math.Floor(value) : (int)Math.Floor(value) : (int)Math.Ceil(value); 返回Utils.RandomDouble()1) 然而,你在描述 随机舍入 另一种无偏平局打破方法是随机取整: 如果y的分数部分为.5,则在y+0.5和y中随机选择q− 0.5,概率相等 就像从一半到一半一样,这条规则基本上没有总体偏见;但在偶数和奇数q值之间也是公

我想这样做:

return Utils.RandomDouble() < value - Math.Floor(value) : (int)Math.Floor(value) : (int)Math.Ceil(value);
返回Utils.RandomDouble()
很难用谷歌搜索;)有没有关于这种舍入机制的文献或名称

只是一点背景:
我们在游戏中使用它,我们的生命值基于整数(生命值),但更精确地计算基于双倍的伤害。

银行家的舍入可以,但它不是随机的:它只是试图在输入是某种程度上分散的情况下均匀分布偏差(比如说stddev>1)

然而,你在描述

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

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


有些关联:交替平局突破(仍然会引入偏差,但缺少随机成分)

谢谢,因为我们可能会得到很多“命中”,比如说1.5点伤害,银行家四舍五入不会代表10次命中后~15点伤害。@Tarion是随机或交替平局突破的好例子,IYAM。