gpt4 book ai didi

r - 生成m个等距的数字,它们在R中的总和为1

转载 作者:行者123 更新时间:2023-12-04 13:31:05 25 4
gpt4 key购买 nike

给定m,我们如何才能生成m等距的数字,这些数字加起来等于1从而等于A1 > A2 > ... > Am

例如,如果是m=4,那么我们应该具有:

a <- c(0.4, 0.3, 0.2, 0.1)

abs(diff(a))
#[1] 0.1 0.1 0.1

sum(a)
#[1] 1

m=5:
b <- c(0.30, 0.25, 0.20, 0.15, 0.10)

abs(diff(b))
#[1] 0.05 0.05 0.05 0.05

sum(b)
#[1]

最佳答案

如果需要可调整的空间或起点,则可以使用公式根据起点来计算空间,也可以使用基于空间的起点来计算空间:

方案1:可调整的起点:

m = 5; s = 0.9

seq(from = s, by = -(m*s - 1) * 2/((m - 1) * m), length.out = m)
#[1] 0.90 0.55 0.20 -0.15 -0.50

sum(seq(from = s, by = -(m*s - 1) * 2/((m - 1) * m), length.out = m))
#[1] 1

方案2:可调整的空间:
m = 5; d = 0.2

seq(from = 1/m + ((m - 1) * d/2), by = -d, length.out = m)
# [1] 0.6 0.4 0.2 0.0 -0.2

sum(seq(from = 1/m + ((m - 1) * d/2), by = -d, length.out = m))
# [1] 1

关于r - 生成m个等距的数字,它们在R中的总和为1,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40681257/

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