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

如何创建10×10的0-1矩阵:1的概率为1/列索引?

搞定10×10 0-1矩阵生成:定义概率向量h的正确姿势

嘿,我来帮你解决这个矩阵生成的问题!首先咱们得先明确规则:你说的“列索引”肯定是从1开始算的(不然第0列的概率会是1/0,完全不合理),所以第1列出现1的概率是1/1=1,第2列是1/2,一直到第10列是1/10。

第一步:正确定义概率向量h

h就是一个长度为10的向量,每个位置对应对应列生成1的概率。分两种常用语言给你示例:

R语言定义h

# 列索引从1到10,h的第i个元素对应第i列的概率
h <- 1 / 1:10

运行后h就是[1, 0.5, 0.333..., 0.1]这样的向量,完美对应每列的概率。

Python(用numpy)定义h

import numpy as np
# 生成从1到10的序列,再取倒数得到概率向量
h = 1 / np.arange(1, 11)

得到的h和R里的是一样的,只是Python里索引从0开始,所以h[0]对应第1列的概率,h[9]对应第10列的概率。

第二步:用for循环生成矩阵

有了h之后,循环每一列,根据对应概率生成10个0/1元素就行:

R语言完整代码

# 初始化10×10的空矩阵,默认填充0
result_matrix <- matrix(0, nrow = 10, ncol = 10)

# 循环每一列
for (col in 1:10) {
  # 用rbinom生成10个伯努利试验结果:size=1表示单次试验,prob取h[col]
  result_matrix[, col] <- rbinom(n = 10, size = 1, prob = h[col])
}

Python完整代码

import numpy as np

# 初始化10×10的全0矩阵,类型为整数
result_matrix = np.zeros((10, 10), dtype=int)

# 循环每一列(Python索引从0到9)
for col_idx in range(10):
    # 用binomial生成10个0/1,p取h[col_idx]对应列的概率
    result_matrix[:, col_idx] = np.random.binomial(n=1, p=h[col_idx], size=10)

你之前可能踩的坑

大概率是这两个问题导致向量+for循环失败:

  • 索引搞混:比如把列索引从0开始算,导致概率计算错误(甚至出现除以0的报错);
  • 概率不对应:循环里没有正确取h中对应列的概率,而是用了同一个概率生成所有列的元素。

只要先把h定义成和列序号一一对应的概率向量,再在循环里每列调用对应概率生成元素,就能顺利生成符合要求的矩阵啦!

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.19 08:54:13