创建具有随机位置的矩阵

0 投票
2 回答
705 浏览
提问于 2025-04-18 06:11

我正在用这个代码创建一个矩阵

def letsplay(m,n):
    matrix = [[ '.' for m in range(10)] for n in range(10)]
    for sublist in matrix:
        s = str(sublist)
        s = s.replace('[', '|').replace(']', '|').replace(',', "")
        print(s)

这个代码会返回

>>> '.'.'.'.'.'.'.'.'.'.'
    '.'.'.'.'.'.'.'.'.'.'
    ...
    ...

这样就创建了一个10x10的矩阵。现在我想在这个矩阵的随机位置添加一个值,概率是用户输入的prob。然后在这些随机位置上返回一个'N'。

2 个回答

0

不太明白prob=5是什么意思,因为概率的范围是从0到1吧?我觉得你的问题可以分成两部分。

  • 随机改变矩阵中的一个元素

    matrix[random.randrange(10)][random.randrange(10)] = 'N'

  • 根据概率改变矩阵中的多个元素。

    import random
    prob = 0.01
    numNs = prob*10*10 # because e.g. 1% chance in 10x10 matrix = 1 field
    for i in range(numNs):   
      changed = False   
      while not changed:
        x = random.randrange(10)
        y = random.randrange(10)
        if not matrix[x][y] == 'N': # if not already changed
          matrix[x][y] = 'N'
          changed = True
    
1

可以考虑使用一个概率矩阵:

probs = numpy.random.random_sample((10, 10))
data = numpy.empty(probs.shape, dtype='S1')
data.fill('.')
data[probs < threshold] = 'N'

这里的 threshold 是你自己选择的一个变量,比如说,你可以设定为 0.05,这样就代表有 5% 的机会。

撰写回答