python - 如何在没有任何模块的情况下从python3中的列表中获取随机项
问题描述
我正在使用 Python 3.9 并且有一个列表list1 = ['a', 'b', 'c', 'd']
我想从列表中获取一个随机项目而不使用任何模块,例如random
Python 中有一个模块和一个函数random.choice(list1)
我可以使用它但是还有另一种方法可以从列表中获取随机项目在 Python 中不使用任何模块?
解决方案
随机和伪随机生成器最终将依赖于某种模块,即使只是为了获得生成伪随机数所需的种子。time.time
在模块中可以找到种子的一个常见示例time
,尽管它不一定是一个好的示例。没有模块的唯一方法是选择一个固定的种子,但是只有一个固定的数字序列是可能的。
除了种子,还有算法。一种流行的选择是线性同余生成器(LCG)。该算法适用于学习目的;然而,LCG 远非完美,不应该用于安全应用或严肃的模拟。请参阅此答案:如何在 C#/Unity 和 Python 之间同步 PRNG?
解决方案中还涉及两件事:生成一个随机整数,以及从列表中选择一个随机项。
- 在[0, n)中生成一个随机整数;也就是建设
RNDINTEXC(n)
。为此,请参阅Melissa O'Neill 的页面。 - 从列表中选择一个随机项目,执行
list[RNDINTEXC(len(list))]
.
推荐阅读
- bash - 为什么在 USERNAME 设置为其他内容时服务以 root 身份运行
- java - Punch Clock While 循环故障
- java - 最小尺寸子数组
- c++ - 游戏中 TGA 图像的动态调整大小
- android - 我正在尝试创建 webview 活动,但未加载整个网站
- javascript - 从多维对象数组中删除重复项
- css - 更改融合图分割高度和宽度
- aurelia - 为什么“aurelia-cli”必须依赖“npm”包?
- google-bigquery - 使用 case when 来识别 timestamp = 'null'
- c# - Texblock 文本装饰未更新 UWP