gpt4 book ai didi

r - R 中 0-1 和 1 之间的所有值组合

转载 作者:行者123 更新时间:2023-12-05 00:28:09 25 4
gpt4 key购买 nike

简单的问题:我正在尝试获得 3 个数字(0.1 到 0.9 之间)的权重之和为 1 的所有组合。

例子:

c(0.20,0.20,0.60)
c(0.35,0.15,0.50)
.................

权重相差 0.05

我试过这个:
library(gregmisc)
permutations(n = 9, r = 3, v = seq(0.1,0.9,0.05))

combn(seq(0.1,0.9,0.05),c(3))

但是我需要 3 个数字(权重)等于 1,我该怎么做?

最佳答案

x <- expand.grid(seq(0.1,1,0.05),
seq(0.1,1,0.05),
seq(0.1,1,0.05))

x <- x[rowSums(x)==1,]

编辑:使用它来避免浮点错误:
x <- x[abs(rowSums(x)-1) < .Machine$double.eps ^ 0.5,]

#if order doesn't matter
unique(apply(x,1,sort), MARGIN=2)
# 15 33 51 69 87 105 123 141 393 411 429 447 465 483 771 789 807 825 #843 1149 1167 1185 1527 1545
#[1,] 0.1 0.10 0.1 0.10 0.1 0.10 0.1 0.10 0.15 0.15 0.15 0.15 0.15 0.15 0.2 0.20 0.2 0.20 0.2 0.25 0.25 0.25 0.3 0.30
#[2,] 0.1 0.15 0.2 0.25 0.3 0.35 0.4 0.45 0.15 0.20 0.25 0.30 0.35 0.40 0.2 0.25 0.3 0.35 0.4 0.25 0.30 0.35 0.3 0.35
#[3,] 0.8 0.75 0.7 0.65 0.6 0.55 0.5 0.45 0.70 0.65 0.60 0.55 0.50 0.45 0.6 0.55 0.5 0.45 0.4 0.50 0.45 0.40 0.4 0.35

如果可能的组合数量很大,这将遇到性能和内存问题。

关于r - R 中 0-1 和 1 之间的所有值组合,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19344609/

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