如何在C++中实现从不同长度数组随机选元素生成MadLib?
用数组实现随机MadLib生成方案
核心思路
通过通用随机选取函数,从每个预设数组中抽取元素,再拼接成完整的MadLib文本。以下是JavaScript和Python两种常见实现:
JavaScript 实现
- 定义预设数组(按需求填充选项)
// 预设数组 const place = ["火山口", "图书馆", "海底洞穴", "太空站", "面包店"]; const name = ["莉莉", "杰克", "玛雅", "里奥", "佐伊"]; const verb = ["跳着踢踏舞", "吹着口哨", "哼着摇滚", "耍着杂技", "弹着尤克里里"]; const animal = ["粉色河马", "会说话的猫头鹰", "戴帽子的企鹅", "三只眼的猫", "迷你长颈鹿"]; const phrase = ["在月光下转圈圈", "把快乐打包成快递", "和影子玩猜拳", "对着星星许愿", "把烦恼揉成纸团"]; const object = ["镀金勺子", "发光的玻璃球", "复古收音机", "毛绒恐龙玩偶", "魔法地图", "手工编织围巾"]; const country = ["冰岛", "新西兰", "哥斯达黎加", "摩洛哥", "日本", "巴西", "挪威", "南非", "加拿大"];
- 通用随机选择函数
// 从数组中随机选取一个元素 function getRandomElement(arr) { const randomIndex = Math.floor(Math.random() * arr.length); return arr[randomIndex]; }
- 生成MadLib文本
// 抽取随机元素 const randomPlace = getRandomElement(place); const randomName = getRandomElement(name); const randomVerb = getRandomElement(verb); const randomAnimal = getRandomElement(animal); const randomPhrase = getRandomElement(phrase); const randomObject = getRandomElement(object); const randomCountry = getRandomElement(country); // 拼接成MadLib句子 const madLib = `来自${randomCountry}的${randomName},在${randomPlace}里${randomVerb},身边跟着一只${randomAnimal},手里攥着${randomObject},嘴里念叨着:"${randomPhrase}!"`; // 输出结果 console.log(madLib);
Python 实现
- 定义预设数组
# 预设数组 place = ["火山口", "图书馆", "海底洞穴", "太空站", "面包店"] name = ["莉莉", "杰克", "玛雅", "里奥", "佐伊"] verb = ["跳着踢踏舞", "吹着口哨", "哼着摇滚", "耍着杂技", "弹着尤克里里"] animal = ["粉色河马", "会说话的猫头鹰", "戴帽子的企鹅", "三只眼的猫", "迷你长颈鹿"] phrase = ["在月光下转圈圈", "把快乐打包成快递", "和影子玩猜拳", "对着星星许愿", "把烦恼揉成纸团"] object_list = ["镀金勺子", "发光的玻璃球", "复古收音机", "毛绒恐龙玩偶", "魔法地图", "手工编织围巾"] country = ["冰岛", "新西兰", "哥斯达黎加", "摩洛哥", "日本", "巴西", "挪威", "南非", "加拿大"]
- 随机选择与文本生成
import random # 抽取随机元素 random_place = random.choice(place) random_name = random.choice(name) random_verb = random.choice(verb) random_animal = random.choice(animal) random_phrase = random.choice(phrase) random_object = random.choice(object_list) random_country = random.choice(country) # 拼接MadLib mad_lib = f"来自{random_country}的{random_name},在{random_place}里{random_verb},身边跟着一只{random_animal},手里攥着{random_object},嘴里念叨着:\"{random_phrase}!\"" # 输出结果 print(mad_lib)
注意事项
- 数组命名尽量避免和语言关键字冲突(比如Python中
object是内置类型,所以改用object_list) - 可以根据需求修改MadLib的拼接句式,让文本更有趣多样
内容的提问来源于stack exchange,提问作者TinyChops
相关产品推荐
相关产品推荐

