【发布时间】:2014-04-10 00:41:54
【问题描述】:
我最近获得了一个函数来编写一个随机二进制矩阵,条件是对角线为 0。
fun <- function(n){
vals <- sample(0:1, n*(n-1)/2, rep = T)
mat <- matrix(0, n, n)
mat[upper.tri(mat)] <- vals
mat[lower.tri(mat)] <- vals
mat
}
在这里,我将“样本”中的值分别输入到上下三角形。我想将其保留在任何更新的函数中,因为有时我可能希望将每个三角形的转置输入另一个。
我需要帮助的是如何更改随机矩阵中 1 的频率。我相信,这已经围绕正态分布而变化。例如在一个 9x9 的矩阵中,需要填充 81-9=72 个单元格,平均使用 36 个 1。
但是,如果我想创建概率为的矩阵,例如p=0.9 有一个 1,或者例如p=0.2 of there are a 1... - 这是怎么做到的?
我尝试了一些方法来通过添加概率函数来更改代码的 sample(0:1,) 部分,但我只得到了错误。
谢谢
【问题讨论】:
-
将函数的第一行更改为
vals <- sample(0:1, n*(n-1)/2, rep = T, prob=c(0.1,0.9))对我有用。
标签: r function matrix binary probability