如何避免随机选择重复?游戏NPC命名程序优化问题
游戏NPC名称生成的问题解决
- 核心需求:从名、姓两个列表里随机组合生成不重复的NPC名称,个人偏好使用
list而非dict,想知道这种选择有没有明显弊端 - 踩过的坑:
- 在
adding_male_NPC函数里用.count()方法检查重复,实际效果很差,还是会出现重复名称 - 尝试用dict去重,但会直接削减生成的NPC数量,达不到预期需求
- 在
- 最终可行方案:用
itertools.product生成所有名和姓的唯一组合,得到一个包含所有可能唯一名称的列表,之后直接从这个列表里随机选取即可,彻底解决重复问题 - 关于list vs dict的弊端:只要逻辑处理到位,用list完全没问题。唯一可能的潜在问题是,当名、姓列表极大,组合数量非常多的时候,list的重复判断(比如用
in检查是否存在)效率会比dict低,但如果像上面这样先通过itertools.product预先生成所有唯一组合,后续就不需要做重复判断了,这个弊端也就不存在了
内容的提问来源于stack exchange,提问作者beLIEve
相关产品推荐
相关产品推荐

