如何生成含重复字符串与空白字符串的随机字符串
实现带重复和空白的随机字符串生成
要实现你需要的效果,核心是维护一个已生成字符串的缓存池,同时通过概率控制随机选择生成新字符串、复用已有字符串或者生成空白字符串。以下是修改后的代码:
import random import string import numpy as np def randomGenerator(length): return ''.join(random.choice(string.ascii_uppercase + string.digits) for _ in range(length)) # 初始化存储已生成字符串的池 generated_strings = [] # 设定三种行为的概率权重:生成新字符串、复用已有、生成空白 # 权重可按需调整,random.choices会自动做归一化处理 action_weights = [6, 2, 2] for _ in range(16): # 随机选择本次执行的操作 action = random.choices( ['new', 'repeat', 'blank'], weights=action_weights )[0] if action == 'new': new_str = randomGenerator(8) generated_strings.append(new_str) current_str = new_str elif action == 'repeat' and generated_strings: # 仅当池中有字符串时才执行复用操作 current_str = random.choice(generated_strings) else: # 生成与随机字符串长度一致的空白字符串 current_str = ' ' * 8 mat = np.array([[current_str]]) print(mat)
关键逻辑说明:
- 字符串缓存池:
generated_strings用来保存已生成的随机字符串,后续可从中随机选取实现重复效果 - 概率调控:通过
random.choices的weights参数调整三种行为的出现频率,示例设置为60%概率生成新字符串、20%复用已有字符串、20%生成空白 - 空白字符串生成:直接用
' ' * 8生成指定长度的空白,保证和随机字符串长度统一
运行这段代码后,输出会包含重复字符串和空白项,与你期望的效果一致。
内容的提问来源于stack exchange,提问作者sly
相关产品推荐
相关产品推荐

