如何让二维数组中每行*的出现概率逐行降低?
实现二维数组每行
*数量逐行减少的方案 问题说明
需要生成一个二维数组,每行中*的数量逐行递减(例如第1行size个,第2行size-1个,…,最后1行1个),且*的位置随机分布。
修正后的代码
import random import numpy as np import sys size = int(sys.argv[1]) # 初始化数组,用紫色的点填充 mat = np.full((size, size), '\x1b[35m.') def print_array(): for y in range(size): # 确定当前行需要的*数量:逐行减1,第一行size个,最后一行1个 star_count = size - y # 随机选择star_count个不重复的列索引 cols = random.sample(range(size), star_count) # 将选中的列设置为白色的* for col in cols: mat[y][col] = '\x1b[37m*' # 打印当前行,所有字符连在一起后换行 print(''.join(mat[y])) print_array()
关键修改点
- 控制每行
*数量:通过star_count = size - y实现逐行递减,y从0开始计数,第一行对应size个*,最后一行对应1个*。 - 随机不重复位置选择:用
random.sample()从列索引中挑选指定数量的不重复位置,避免重复设置同一位置导致*数量不足。 - 修复打印格式:原代码内层循环每次打印单个字符后换行,导致输出混乱,改用
''.join(mat[y])将整行字符拼接后打印,保证每行内容在同一行显示。
内容的提问来源于stack exchange,提问作者wbowser
相关产品推荐
相关产品推荐

