Python 在正方形的特定区域创建随机数

Python 在正方形的特定区域创建随机数,python,algorithm,Python,Algorithm,我试图创建这样一个对称矩阵,每个区域的元素密度不同 矩阵是256x256,在级别1中,我有16个长度为16的正方形,每个正方形有10个元素: #LEVEL I C = np.zeros((256,256)) s = 0 for k in range(16): if k > 0: s += 16 while m < 10: #number of elements in most inner square i,j = np.random.

我试图创建这样一个对称矩阵,每个区域的元素密度不同

矩阵是
256x256
,在级别1中,我有16个长度为16的正方形,每个正方形有10个元素:

#LEVEL I
C = np.zeros((256,256))
s = 0
for k in range(16):
    if k > 0:
        s += 16
    while m < 10: #number of elements in most inner square
        i,j = np.random.randint(s,s+16,size=2) # randint(low,high,size)
        C[i,j] = C[j,i] = 1
        m = 0.5 * np.sum(C[s:s+16,s:s+16])  # count the number of elements
#一级
C=np.零((256256))
s=0
对于范围(16)内的k:
如果k>0:
s+=16
当m<10时:大多数内部正方形中的元素数
i、 j=np.random.randint(s,s+16,size=2)#randint(低,高,size)
C[i,j]=C[j,i]=1
m=0.5*np.sum(C[s:s+16,s:s+16])#计算元素的数量
级别2中,我有4个长度为64的正方形,每个正方形有4个元素,除了小正方形内的元素(4个正方形每个10个元素+4个大正方形中的元素)

对于级别2,我需要创建与小方块没有重叠的整数随机数

#LEVEL II
s = 0
for k in range(4):
    if k>0:
        s += 64
    while m < (40+4):
        # create i,j with no overlapping with small squares
        C[i,j]=C[j,i] = 1
        m = 0.5 * np.sum(C[s:s+64,s:s+64])
#二级
s=0
对于范围(4)中的k:
如果k>0:
s+=64
当m<(40+4)时:
#创建i,j,不与小正方形重叠
C[i,j]=C[j,i]=1
m=0.5*np.和(C[s:s+64,s:s+64])
我很感激任何想法或评论

#编辑 我认为一个解决方案可以是定义另一个平方矩阵,其中子方都是aij=1,并比较每个while循环中的元素数量

import numpy as np

# Matrix size and inner squares length
s = 256
L2 = 64
L1 = 16

# Create matrix and masks along MAIN diagonal
C = 1 - np.random.random((s, s))
L2_mask = np.array([range(s)]*s)//L2 + np.array([range(s-1, -1, -1)]*s).T//L2
L1_mask = np.array([range(s)]*s)//L1 + np.array([range(s-1, -1, -1)]*s).T//L1

# Fill in inner squares
C[np.where(L2_mask == 3)] = np.random.randint(2, 10, 16384)
C[np.where(L1_mask == 15)] = np.random.randint(100, 200, 4096)
要生成对称矩阵,我可以建议两种方法:

# Turn matrix into symmetric
C_symm = (C + C.T)//2

现在把它翻过来:

# Flip it
C_final = np.fliplr(C_symm)
要生成对称矩阵,我可以建议两种方法:

# Turn matrix into symmetric
C_symm = (C + C.T)//2

现在把它翻过来:

# Flip it
C_final = np.fliplr(C_symm)

你的要求不太清楚。你的意思是在级别1中,在256x256的矩阵中有256个16x16大小的正方形吗?每一个一级正方形“有10个元素”是什么意思?等等。我认为这个数字比我的解释更清楚。你可以看到一个大正方形。里面有4个较小的正方形(浅红色-第2层)和16个较小的正方形(深红色-第1层)<代码>1(256x256)=4(4x64)=16(16x16)每个
(aij=aji)=0是对称模式中的一个元素matrix@Abolfazl在某个级别上,每个正方形之间的数字可能重叠?您的要求不太清楚。你的意思是在级别1中,在256x256的矩阵中有256个16x16大小的正方形吗?每一个一级正方形“有10个元素”是什么意思?等等。我认为这个数字比我的解释更清楚。你可以看到一个大正方形。里面有4个较小的正方形(浅红色-第2层)和16个较小的正方形(深红色-第1层)<代码>1(256x256)=4(4x64)=16(16x16)
每个
(aij=aji)=0是对称模式中的一个元素matrix@Abolfazl某个级别上每个正方形之间的数字是否可以重叠?