随机数在编程中是一件很棘手的事情,尤其是当您需要真正的随机性时。
不幸的是,在计算机的世界里,真正的随机性实际上是不可能的。为什么?计算机只能做它们被告知的事情。为了实现真正的随机性,您必须引入外部影响来使其发生(例如移动鼠标、在键盘上键入随机字符、风速等事件)。
然而,伪随机性是可能的,这就是我们正在讨论的。
在Python 程序中使用随机数非常有用。例如,假设您玩《龙与地下城》并希望创建一个小型 Python 程序来为您摇号。当然,滚动物理骰子给玩家带来了很大的满足感,但为此创建一个有趣的小应用程序是学习在 Python 中使用随机数的好方法。
让我告诉你怎么做——它从随机模块开始。
什么是随机模块?
Python random 随机模块内置于 Python 中。因此无需在安装 Python 后再次安装它。random包含多种方法,例如:
seed() – 初始化随机数生成器。
getstate() – 返回随机数生成器的当前状态
randrange() – 返回给定范围内的随机数(不包括端点)
randint() – 返回给定范围(包括两个端点)之间的随机数
choice() – 返回给定序列中的随机元素
shuffle() – 打乱数字序列并以随机顺序返回它们
让我首先演示使用一个非常简单的应用程序生成随机数,该应用程序运行时将生成特定范围内的单个随机数。
你需要准备什么
为此,您唯一需要的是一台安装了 Python3的台式机或笔记本电脑,里面可以是 Linux、MacOS 或 Windows系统。当然,您还需要一个文本编辑器。
我将在 Ubuntu Budgie 和 nano 编辑器上演示这些代码。如果您使用不同的平台(或不同的编辑器),则需要更改文件创建命令。除此之外应该能够毫无问题地进行操作。
一个简单的随机数生成器
对于我们的第一个应用程序,我将使用 randint() 生成 0 到 10 之间的随机数。应用程序中的第一件事是导入随机模块:
import random
我们的下一行将使用 randint() 函数定义一个变量 n,如下所示:
n = random.randint(0,10)
请注意,我们不是使用 n = randint(0,10),因为我们必须告诉 Python randint()方法明确属于哪个模块。
最后,我们告诉 Python 打印 n:
print(n)
上面的行将打印出 randint(0,10) 的结果。
整个应用程序如下所示:
import random
n = random.randint(0,10)
print(n)
用以下命令创建新文件:
nano simplerand.py
将以上代码粘贴到文件中并保存。接着使用以下命令运行应用程序:
python3 simplerand.py
每次运行该程序时,您都应该看到一个 0 到 10 之间的伪随机数。
如果您不想包含限制的外部范围,则可以使用randrange()函数。通过使用此函数,您可以从随机性中排除 0 和 10 作为选项。该代码如下所示:
import random
n = random.ranrange(0,10)
print(n)
稍微复杂一点的随机数生成器
当然,上面的应用程序并不是很方便,尤其是当您正在进行 D&D 时。您可能需要掷 3、6、10、20 或 100 面的骰子。让我向您展示创建它是多么容易。
为此,我们将接受用户的输入并告诉他们输入所需的骰子面。当然,我们做的第一件事是引入随机库:
import random
我们的下一行使用input()函数 定义 number_1,如下所示:
number_1 = input("Enter the number of sides on your dice from 3, 6, 10, 20, and 100: ")
下一行有一点繁琐,因为我们必须确保 Python 知道我们范围内的第一个数字始终为 0(因为您必须考虑到严重的遗漏,对吧?
该行看起来像这样:
n = random.randint(0,int(number_1))
因此,我们将 n 设置为一个随机数,范围从 0 到用户输入的任何值(由 number_1 定义)。
最后,我们告诉 Python 使用以下行打印结果:
print(n)
我们的整个程序如下所示:
import random
number_1 = input("Enter the number of sides on your dice from 3,10,20, and 100: ")
n = random.randint(0,int(number_1))
print(n)
使用以下命令创建新文件:
nano rando.py
使用以下命令运行应用程序:
python3 rando.py
每次运行该应用程序时,您都会得到一个伪随机结果,范围从 0 到用户输入的任何数字。
一个有趣的旋转是在混合中添加一个 while 循环,这样您就不必一遍又一遍地运行程序来查看骰子的滚动。该代码如下所示:
import random
while True:
number_1 = input("Enter the number of sides on your dice from 3, 6, 10, 20, and 100: ")
n = random.randint(0,int(number_1))
print(n)
当你运行上面的代码时,它会不断要求输入并输出一个随机数。要结束应用程序,请按 Ctrl+C 键盘快捷键即可。
这便是 Python 中的简单随机数生成。