簡體   English   中英

創建一個0和1的隨機數塊

[英]Creating a random number block of 0s and 1s

        import random

        a = [0]
        b = [1]

        for row in range(1):
            for colum in range(5):
                random.shuffle(a and b)
                print (" ".join( repr(e) for e in a + b[:5]))

大家好,

因此,我試圖創建一個填充為1或0的5 x 5矩陣,但是要實現它有些困難。 我使用上面的代碼嘗試了一下,但是沒有用。 我是python編程的新手,所以要輕柔哈哈。

這是理想的結果:(矩陣中的最小值必須至少為101。如何實現該目標?

        0 1 1 1 1
        0 1 1 0 0
        0 1 1 0 1 
        1 1 0 1 1
        1 1 1 1 1 

任何建議將不勝感激。 謝謝! :)

您可以先獲取介於10到25之間的隨機數,然后創建一個列表,其中包含多個1,后跟0,以達到25。

import random
ones = random.randint(10, 25)
l = [1] * ones + [0] * (25-ones)

[1] * ones創建了一個列表ones 1的。 [0] * (25-ones)創建一個列表,剩余的0表示該列表。 然后使用+將它們連接起來,以產生一個包含25個項目的列表。

然后隨機播放此列表:

random.shuffle(l)

最后將值復制到5x5矩陣中:

matrix = [l[i:i+5] for i in range(0, 25, 5)]

range(0, 25, 5)迭代從0255 ,即0510 ,等等。然后l[i:i+5]需要5種元素的開始在每一個這些索引的切片。 列表理解將這些全部組合成一個二維列表。

您可以使用numpy.random.randint

>>> import numpy as np
>>> np.random.randint(0, 2, (5, 5))
array([[1, 1, 1, 0, 0],
       [1, 0, 1, 1, 1],
       [0, 1, 1, 0, 0],
       [1, 0, 0, 0, 0],
       [1, 0, 0, 0, 0]])

然后丟棄少於10個溶液

用於計數1(因為您只有0和1)

>>> data = np.random.randint(0, 2, (5, 5))
>>> data.sum()
13

random.choices與列表random.choices結合起來是一種快速的方法。 通常,您會有10個,但可以循環直到確定:

from random import choices
total = 0
while total < 10:
    matrix = [choices((0, 1), k=5) for i in range(5)]
    total = sum(map(sum, matrix))

print(matrix)

[[1,1,1,0,0],
[1、0、0、1、0],
[1、1、0、0、0],
[0,0,1,1,0],
[1、0、1、0、0]]

實際上,親愛的朋友,有一個解決此問題的簡單方法,您應該將所有代碼放在“ if name ==“ main ”:“之后。

import random


def log_matrix(matrix):
    for r in range(len(matrix)):
        print(" ".join([str(i) for i in matrix[r]]))


def sum_matrix(matrix):
    return sum(map(sum, matrix))


def gen_matrix(row, col, minimum):
    random_matrix = [[random.choice([0, 1]) for _ in range(row)]
                     for _ in range(col)]
    while sum_matrix(random_matrix) < minimum:
        random_matrix[random.choice([0, row - 1])][random.choice(
            [0, col - 1])] = 1
    return random_matrix


if __name__ == "__main__":
    random_matrix = gen_matrix(5, 5, 10)
    log_matrix(random_matrix)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM