You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

生成列和为1的(0,1)随机矩阵函数:代码问题排查

问题分析与修正

你的代码核心问题出在生成随机列的那一行:columna_aleatoria <- runif(num_columnas, min = 0, max = 1)。这里你误将列数num_columnas作为生成随机数的数量,但每一列应该包含num_filas个元素(对应矩阵的行数)。参数用错后,R会自动循环填充长度不匹配的向量,最终导致行和为1而非列和为1。

修正后的代码

generar_matriz_columnas_suma_uno <- function(num_filas, num_columnas) {
  matriz <- matrix(0, nrow = num_filas, ncol = num_columnas)
  
  for (j in 1:num_columnas) {
    # 生成对应行数的随机向量(取值0到1)
    columna_aleatoria <- runif(num_filas, min = 0, max = 1)
    
    # 归一化处理,让列元素之和为1
    suma_columna <- sum(columna_aleatoria)
    columna_normalizada <- columna_aleatoria / suma_columna
    
    # 将归一化后的列赋值给矩阵
    matriz[, j] <- columna_normalizada
  }
  
  return(matriz)
}

验证方法

生成矩阵后,用colSums()函数检查每一列的和是否为1:

# 测试:生成3行2列的矩阵
test_mat <- generar_matriz_columnas_suma_uno(3, 2)
print(test_mat)
# 查看列和
colSums(test_mat)

输出的colSums结果应全部为1,说明修正有效。

内容的提问来源于stack exchange,提问作者Ayoze Alfageme

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.18 17:14:57