Python random randrange()

2025年3月17日 | 阅读 7 分钟

Python 的 **random** 模块允许生成随机数。生成的数字是伪随机数序列,它们基于使用的函数。random 模块中有多种函数用于生成随机数,例如 **random.random(), random.randint(), random.choice(), random.randrange(start, stop, width)** 等等。

在这里,我们将讨论 **random** 模块的 **randrange()** 函数。randrange() 函数用于在参数指定的范围内生成随机数。它接受三个参数:起始数字、停止数字和宽度,用于跳过范围内的数字。

random.randrange() 的语法

**random.randrange()** 函数返回给定范围(即 start 和 stop)内的随机整数。**random.randrange()** 函数接收三个参数作为输入:**start、stop** 和 **width**。在这三个参数中,**start** 和 **width** 是可选的。

  • **start** 参数是随机范围内的起始或下限整数。如果未传递 start 参数,则默认为 0。
  • **stop** 参数是随机范围内的最后一个数字或上限整数。
  • **width** 参数是随机序列中每个数字之间的间隔。此参数是可选的,如果未传递 width 参数,则默认为 1。

**randrange(start, stop, width)** 函数在生成随机整数时不包含结束参数。**stop** 参数是**排他的**,不会在随机数中生成。

看看这个 random.randrange(3, 30, 3) 函数,它将生成 3 到 30 之间的任何随机整数,例如 3、6、9、12、…27。但此函数在生成随机数时永远不会包含 30。

在应用程序中生成随机数一直很重要,并且在日常生活中具有多种实际用途。例如,生成一个随机数并将其作为 OTP(一次性密码)发送给客户,以确保交易安全。生成随机数的另一个例子是在玩 Ludo 游戏时用于生成随机骰子点数。

示例 1:random.randrange() 在给定范围内生成随机整数

让我们看一个生成给定范围内随机整数的示例。此示例展示了 random.randrange() 函数的所有不同形式。

输出

Python random randrange()

示例 2:生成 n 的随机整数范围(倍数)

让我们生成 5 到 100 之间的随机整数,范围为 5,例如 5、10、25、…、90、95。

输出

Python random randrange()

示例 3:生成特定长度的随机整数

您还可以生成特定长度的随机整数。如果要生成 3 位数字,请在 **randrange()** 函数中将 **start** 和 **stop** 参数设置为至少 3 位数字的长度(100)和至少 4 位数字的长度(1000),因为它会生成 3 位数字,范围从 100 到 999,其中 4 位数字(1000)被排除。

示例:使用 random.randrange() 生成 3 位随机数

输出

First random number of length 3 is: 813
Second random number of length 3 is: 770

示例 4:生成随机负整数

让我们看一个生成 -50 到 -10 之间随机负整数的示例。

输出

Random negative integer number between -50 to -10
Random negative integer number between -50 to -10 is:  -43

示例 5:生成随机正数或负数整数

输出

-5
0

请注意,传递给 *random.randrange()* 函数的 **start** 和 **stop** 参数必须按递增顺序排列,例如 *random.randrange(5, 10)* 或 *random.randrange(-20, -10)*。**start** 参数应始终小于 **stop** 参数;否则,此函数将生成错误,如*"Traceback (most recent call last) and raise ValueError empty range for randrange()"*。

例如

看看这个例子,我们在其中违反了规则,将 **start** 参数设置为大于 **stop** 参数在 **random.randrange()** 函数中,这会生成一个错误消息,如

输出

Python random randrange()

Python **random** 模块中用于随机生成数字的其他一些函数是:

  • choice()
  • randint()
  • sample()
  • sort()

random.choice()

Python 的 **random** 模块有一个 **choice()** 函数,用于从列表或其他序列中选择一个随机元素。**random.choice()** 函数用于从值列表中返回一个随机元素。

random.choice() 的语法

这里的参数 **sequence** 可以是字符串、列表、元组,而 *random.choice()* 只返回一个随机元素。

在 *random.choices()* 函数中,**k** 是要返回的元素数量。如果我们不指定 **k** 参数的值,*random.choices()* 将从序列或列表中返回单个项。

示例 1

在此示例中,我们传递了一个序列(列表)作为参数,并返回了一个随机元素。

输出

random item from list is:  10 

示例 2

random.choices() 函数主要用于返回具有各种可能性的随机元素。此函数还接受权重(k)作为随机选择的数量。例如,我们想从 5 部电影的列表中打印 3 部随机电影的名称。

输出

random movies from list are:  ['Avengers', 'Black Panther', 'Titanic']

random.randint()

Python 的 **random.randint()** 函数用于在指定范围内生成随机整数。

语法

**random.randint()** 函数接受两个参数:*start*,它是起始范围,*stop*,它是结束范围。在生成随机数时,这两个参数(start、stop)都包含在内。

random.randint() 生成随机整数列表的示例

此示例将使用 randint() 函数创建一个包含多个随机整数的列表。生成一个包含 5 个介于 1 和 100 之间的随机整数的列表,这两个值都包含在内。

输出

Printing list of 5 generated random numbers
[65, 82, 3, 39, 40]

但是,*random.randint()* 函数有可能在输出结果中返回重复的数字。要避免结果中出现重复的随机整数,请使用 *random.sample()* 函数。

random.sample()

在上面的示例中,*random.randint()* 有可能从列表中生成重复的随机数。如果要从列表中生成唯一的随机数,请使用 *random.sample()* 函数。

**random.sample()** 函数从集合、列表和其他序列中生成唯一的元素。Python 的 random.sample() 函数允许从列表中随机抽取多个元素,而不会重复。

random.sample() 生成不重复随机元素列表的示例

在此示例中,我们将从 0 到 100 的范围内生成 10 个随机整数。

输出

[15, 17, 16, 66, 34, 85, 71, 82, 97, 48]

如果要生成一个随机数列表,并且每个数字都必须是 'n' 的倍数,那么可以使用 range() 函数的步长参数。

例如,使用 random.sample(range(0, 100, 5), 10) 从 0 到 100 的范围生成 10 个 5 的倍数的随机整数。

输出

[75, 40, 20, 55, 15, 10, 5, 90, 95, 70]

列表 sort()

Python 的 **sort()** 函数用于按升序(默认)对随机整数列表进行排序。我们还可以通过指定其顺序 *reverse = True* 来按降序对列表值进行排序。*reverse* 的默认值为 *False*。

示例 1:sort() 按升序对列表元素进行排序

在此示例中,我们将使用 *sort()* 函数生成一个包含 5 个数字的随机列表,范围为 50 到 100,步长为 5,并对它们进行排序。

输出

Before sorting random integers list
[90, 80, 60, 55, 85]
After sorting random integers list
[55, 60, 80, 85, 90]

示例 2:sort() 按降序对列表元素进行排序

在此示例中,我们将使用 *randomList.sort(reverse=True)* 按降序对列表元素进行排序。

输出

Before sorting random integers list
[70, 50, 80, 90, 85]
After sorting random integers list
[90, 85, 80, 70, 50]