1
我想在R軟件中生成一個矩陣(4行和30列),其中隨機元素,元素範圍在0和1之間,其中每行的總和等於1.在R中生成一個隨機矩陣,其中每行的總和等於1
我想在R軟件中生成一個矩陣(4行和30列),其中隨機元素,元素範圍在0和1之間,其中每行的總和等於1.在R中生成一個隨機矩陣,其中每行的總和等於1
如果你選擇在n
號碼[0,1],你實際上是撿n-1
斷點其總和爲1。你可以選擇斷點,然後向後工作的數字:
rand.sum <- function(n){
x <- sort(runif(n-1))
c(x,1) - c(0,x)
}
然後
t(replicate(4,rand.sum(30)))
將是隨機數的4×30矩陣,其中eaxch行總和爲1
下面是基於softmax(多項式對數)變換的解決方案。
m <- matrix(rnorm(4 * 30), nrow=30)
prob <- exp(m)/rowSums(exp(m))
rowSums(prob)
#[1] 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
all(prob > 0 & prob < 1)
#[1] TRUE
謝謝很多爲您的答案。 – Sharon