首页 > 解决方案 > 如何在没有任何模块的情况下从python3中的列表中获取随机项

问题描述

我正在使用 Python 3.9 并且有一个列表list1 = ['a', 'b', 'c', 'd']我想从列表中获取一个随机项目而不使用任何模块,例如randomPython 中有一个模块和一个函数random.choice(list1)我可以使用它但是还有另一种方法可以从列表中获取随机项目在 Python 中不使用任何模块?

标签: pythonpython-3.xrandom

解决方案


随机和伪随机生成器最终将依赖于某种模块,即使只是为了获得生成伪随机数所需的种子。time.time在模块中可以找到种子的一个常见示例time,尽管它不一定是一个好的示例。没有模块的唯一方法是选择一个固定的种子,但是只有一个固定的数字序列是可能的。

除了种子,还有算法。一种流行的选择是线性同余生成器(LCG)。该算法适用于学习目的;然而,LCG 远非完美,不应该用于安全应用或严肃的模拟。请参阅此答案:如何在 C#/Unity 和 Python 之间同步 PRNG?

解决方案中还涉及两件事:生成一个随机整数,以及从列表中选择一个随机项。

  • 在[0, n)中生成一个随机整数;也就是建设RNDINTEXC(n)。为此,请参阅Melissa O'Neill 的页面
  • 从列表中选择一个随机项目,执行list[RNDINTEXC(len(list))].

推荐阅读