C# 中的大量操作
Very large number manipulations in C#
我需要使用 Erlang distribution 创建 100,000 到 100,000,000 之间的随机数。正如链接页面上提到的,参数 x 可以是任何数字 [0, +infinity);因此我的取值范围在理论上是可以接受的。
但是在计算概率密度函数时,返回值总是0,这是因为e的幂-\lambda * x 如此大的 x 值总是零。
我需要能够将 e 提高到如此大的幂(实际上是非常小的幂(例如,-40,000))。我的应用程序在 .NET4.5 中,我检查了 system.numerics 命名空间。但是,到目前为止,我无法弄清楚如何执行此计算。
.NET 中的默认浮点数没有您要查找的精度,因为正如您所指出的,此类指数的值小于数字的精度(因此为 0 值) .
如果您想坚持使用 C#,为什么不对任意精度库使用包装器。
对于较大的浮点数,您可以使用 BigRational. This 答案对此有很好的解释。
我需要使用 Erlang distribution 创建 100,000 到 100,000,000 之间的随机数。正如链接页面上提到的,参数 x 可以是任何数字 [0, +infinity);因此我的取值范围在理论上是可以接受的。
但是在计算概率密度函数时,返回值总是0,这是因为e的幂-\lambda * x 如此大的 x 值总是零。
我需要能够将 e 提高到如此大的幂(实际上是非常小的幂(例如,-40,000))。我的应用程序在 .NET4.5 中,我检查了 system.numerics 命名空间。但是,到目前为止,我无法弄清楚如何执行此计算。
.NET 中的默认浮点数没有您要查找的精度,因为正如您所指出的,此类指数的值小于数字的精度(因此为 0 值) .
如果您想坚持使用 C#,为什么不对任意精度库使用包装器。
对于较大的浮点数,您可以使用 BigRational. This 答案对此有很好的解释。