- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在编写一个程序(在 R 中,以防万一),我需要在其中计算元素向量的唯一排列数,其中可以包含重复值。 mathematical formula因为这很简单:元素总数的阶乘除以每个唯一元素的计数的阶乘的乘积。然而,即使实际答案不是很大,天真地计算结果也很可能导致溢出。例如:
# x has 200 elements, but 199 of them are identical
x <- c(rep(1, 199), 2)
num_unique_permutations <- factorial(length(x)) / prod(factorial(table(x)))
如果这没有溢出,那么 num_unique_permutations
将是 200!/(199!*1!) = 200。但是,两者都是 200!和199!溢出 double 的最大值,因此实际结果为 NaN。只要答案本身不溢出,是否有一种好的方法可以始终避免溢出(或下溢)? (或者,只要它不在溢出的 length(x)
因素之内?)
(请注意,R 在大多数数值计算中使用 double ,但问题并非特定于 double 。任何具有范围的数字类型都有相同的问题。另外,我不在乎 float 会失去一点精度数学,因为我只是用它来获得某事的粗略上限。)
最佳答案
在基数 R 中,使用 lfactorial
计算分子和分母的对数。然后对适当的差取幂。
numer <- lfactorial(length(x))
denom <- sum(lfactorial(table(x)))
exp(numer - denom)
#[1] 200
这可以很容易地写成一个函数。
num_unique_permutations <- function(x){
numer <- lfactorial(length(x))
denom <- sum(lfactorial(table(x)))
exp(numer - denom)
}
num_unique_permutations(x)
#[1] 200
关于r - 如何在没有不必要溢出的情况下计算大阶乘的比率?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63690732/
jQuery attributeContainsPrefix [name^="value"] 对比 attributeStartsWith [name|="value"] 实际区别是什么? 最佳答案
在1.1部分在RFC 6749中,有四种角色:资源拥有者、资源服务器、客户端和授权服务器。 如果客户端和资源所有者是同一实体,OAuth 是否变得多余或不必要? 例如,我有一个封闭的 API 和一个面
我有一段代码,其中有一个带有保护子句的 raise 语句: def validate_index index # Change to SizeError raise ArgumentError
我看到了这篇文章( JPA Entity Lifecycle Events vs database trigger ),但它并没有像我在这里那样明确地询问: 当我插入 PK 值为 (null) 的行时
所以,我有一段代码看起来像 if(Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN_MR2){ // Do something }
我是一名优秀的程序员,十分优秀!