gpt4 book ai didi

r - 计算R中的*整数*二项式系数

转载 作者:行者123 更新时间:2023-12-03 21:22:21 24 4
gpt4 key购买 nike

从 n 中选择 k 个对象的方式数,即二项式系数 n!/(k!(n-k)!),当 n 和 k 为整数时为整数。我如何计算这个以保证结果既正确又是整数类型? choose即使使用整数参数,函数也会返回 double 值:

> typeof(choose(4L, 2L))  
[1] "double"

手动计算也是如此,例如n-选择-2 = n(n-1)/2
typeof((4L * (4L - 1L)) / 2L)
[1] "double"

当然我可以用 as.integer() 强制为整数但我对机器精度感到紧张:
> as.integer(3.999999999999999)
[1] 3
> as.integer(3.9999999999999999)
[1] 4
round() (默认 digits=0 )四舍五入到最接近的整数,但返回 double 类型的值。如果我可以确定以 double 格式存储的整数提供给 as.integer(round(...))保证四舍五入到正确的整数,永远不会被机器精度绊倒,然后 as.integer(round(choose(n, k)))可以接受。是这种情况吗?或者是否有替代 choose() 的方法这将为整数参数返回一个整数?

最佳答案

一种方法是使用 VeryLargeIntegers 包。功能是:
二项式(n,k)
例如binom(1000,50) 甚至 binom(10000000,50)
学习如何制作非常大的整数也是明智的,参见:as.vli('1234567890123456789')
https://www.rdocumentation.org/packages/VeryLargeIntegers/versions/0.1.8/topics/06.%20Binomial%20coefficients
该软件包并非完全没有错误,较大的计算需要一段时间。
乔博士。

关于r - 计算R中的*整数*二项式系数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50817180/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com