如何编写place_random_bricks函数生成指定行列的随机砖块字符串
问题解决:生成m×n随机字符串与修正place_random_bricks函数
一、生成m行n列的随机字符串
要生成由m行n列(总长度为m*n)组成、每个字符从G、R、B、Y、C中随机选取且概率均等的字符串,可借助Python的random模块实现:
- 核心逻辑:用
random.choices()从指定颜色集合中重复选取m*n次(支持重复选择,默认每个元素选中概率均等),再将结果拼接为字符串。 - 示例代码:
import random def generate_random_grid(m, n): colours = ['G', 'R', 'B', 'Y', 'C'] total_length = m * n random_chars = random.choices(colours, k=total_length) return ''.join(random_chars)
二、修正place_random_bricks函数
针对需求中place_random_bricks(m, n, colours)函数的要求,以下是修正后的实现,确保生成结果符合“按行放置、颜色选中概率均等、长度为m*n”的要求:
修正后代码
import random def place_random_bricks(m, n, colours): total_cells = m * n # 从colours中均等概率随机选取total_cells个字符,支持重复选择 selected_colours = random.choices(colours, k=total_cells) # 拼接后的字符串顺序即为按行填充结果(前n个字符对应第一行,依次类推) return ''.join(selected_colours)
关键修正点说明
- 概率均等保证:使用
random.choices()替代random.sample()——sample()是无重复选取,无法满足颜色重复出现的需求;choices()默认每个元素权重相同,确保G、R、B、Y、C每个颜色选中概率均为20%。 - 按行放置逻辑:生成的字符列表顺序直接对应按行填充规则,前
n个字符为第一行,接下来n个为第二行,以此类推,符合“完成当前行后再移至下一行”的要求。 - 长度正确性:通过
m*n计算总单元格数,确保返回字符串长度严格匹配需求。
调用示例
# 传入包含指定颜色的字符串(如'GRBYC') result = place_random_bricks(3, 4, 'GRBYC') print(result) # 输出示例:'RBGYCGGRBRYBC'(长度为12,对应3行4列)
内容的提问来源于stack exchange,提问作者Prabin Lama
相关产品推荐
相关产品推荐

