Python教程-Python随机数randrange()
Python的random模块允许生成随机数。生成的数字是伪随机数序列,它们基于所使用的函数。在random模块中有不同类型的函数用于生成随机数,如random.random(),random.randint(),random.choice(),random.randrange(start, stop, width)等等。
在这里,我们将讨论random模块的randrange()函数。randrange()函数用于在其参数中指定的范围内生成随机数。它接受三个参数:起始数字、停止数字和宽度,它用于在范围内跳过一个数字。
random.randrange()的语法
random.randrange(start, stop[, width])
random.randrange()函数返回给定范围内的随机整数。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等,但这个函数在生成随机数时永远不会包括30。
在应用程序中生成随机数一直都很重要,在日常生活中有多种实时用途。例如,生成并发送一个随机数给客户作为一次性密码以进行安全交易。生成随机数的另一个例子是在玩卢多游戏时生成随机的骰子数。
示例1:random.randrange()生成给定范围内的随机整数
让我们看一个示例,我们在给定范围内生成随机整数。这个示例展示了random.randrange()函数的所有不同形式。
import random
print("Generating random number within a given range ")
# Random number between 0 and 29
number1 = random.randrange(30)
print("Random integer: ", number1)
# Random number between 10 and 29
number2 = random.randrange(10, 30)
print("Random integer: ", number2)
# Random number between 25 and 200 divisible by 5
number3 = random.randrange(25, 201, 5)
print("Random integer: ", number3)
输出:
示例2:生成n的随机整数范围(多个)
让我们生成5到100之间的随机整数,这是5的范围,如5、10、25、...、90、95。
import random
#print "Random number range (multiple) of 5"
number = random.randrange(5, 100, 5)
print("Random number range (multiple) of 5 is ", number)
输出:
示例3:生成特定长度的随机整数
您还可以生成特定长度的随机整数。如果要生成3位数的随机数,可以将randrange()函数的*start和stop*参数输入为最小的3位数(100)和最小的4位数(1000),因为它生成的随机数是从100到999中的3位数,而4位数(1000)被排除在外。
示例:使用random.randrange()生成3位数的随机数
import random
number1 = random.randrange(100, 1000)
print("First random number of length 3 is: ", number1)
number2 = random.randrange(100, 1000)
print("Second random number of length 3 is: ", number2)
输出:
First random number of length 3 is: 813
Second random number of length 3 is: 770
示例4:生成随机负整数:
让我们看一个例子,生成-50到-10之间的随机负整数。
import random
randomNagativeInteger = random.randrange(-50, -10)
print("Random negative integer number between -50 to -10")
print("Random negative integer number between -50 to -10 is: ",randomNagativeInteger)
输出:
Random negative integer number between -50 to -10
Random negative integer number between -50 to -10 is: -43
示例5:生成随机正整数或负整数
import random
number1 = random.randrange(-5, 5)
print(number1)
number2 = random.randrange(-5, 5)
print(number2)
输出:
-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()"。
例如:
看看这个示例,我们违反了规则,通过在random.randrange()函数中传递start参数大于stop参数,这将生成一个错误消息:
import random
randomNumber = random.randrange(10,5)
输出:
Python的random模块的一些其他函数,用于随机生成数字的包括:
- choice()
- randint()
- sample()
- sort()
random.choice()
Python的random模块有一个choice()函数,用于从列表或其他序列中选择一个随机元素。random.choice()函数用于从值列表中返回一个随机元素。
random.choice()的语法
random.choice(sequence)
或者
random.choices(sequence, k=l)
这里的参数sequence可以是字符串、列表、元组,而random.choice()只返回一个随机元素。
在random.choices()函数中,k是要返回的元素数量。假设我们不指定k参数的值,random.choices()将返回序列或列表中的单个项目。
示例1:
在这个示例中,我们将一个序列(列表)作为参数提供,并返回一个随机元素。
import random
listValue = [5,10,15,20,25,30]
item = random.choice(listValue)
print("random item from list is: ", item)
输出:
random item from list is: 10
示例2:
random.choices()函数主要用于返回具有不同可能性的随机元素。此函数还接受权重(k)的随机选择。例如,我们想要从5个电影的列表中随机选择3个电影名称。
import random
movieList = ['Matrix', 'Terminator', 'Black Panther', 'Avengers', 'Titanic']
randomMovies = random.choices(movieList, k=3)
print("random movies from list are: ", randomMovies)
输出:
random movies from list are: ['Avengers', 'Black Panther', 'Titanic']
random.randint()
Python的random.randint()函数用于在指定范围内生成随机整数。
语法:
random.randint(start, stop)
random.randint()函数接受两个参数start,它是起始范围,以及stop,它是结束范围。在生成随机数时,这两个参数(start, stop)都包括在内。
生成随机整数的random.randint()的示例
这个示例将使用randint()函数创建多个随机整数的列表。生成一个包含5个随机整数的列表,范围在1到100之间,两个值都包括在内。
import random
randomListValue = []
# specifing length of list equal to 5
for i in range(0, 5):
# generates random numbers from 1 to 100
randomListValue.append(random.randint(1, 100))
print("Printing list of 5 generated random numbers")
print(randomListValue)
输出:
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个随机整数。
import random
# Generate 10 unique random numbers within a range
randomList = random.sample(range(0, 100), 10)
print(randomList)
输出:
[15, 17, 16, 66, 34, 85, 71, 82, 97, 48]
如果要生成一个随机数的列表,并且每个随机数必须是'n'的倍数,那么可以使用range()函数的步骤参数。
例如,使用random.sample(range(0, 100, 5), 10)生成从0到100的范围内的10个是5的倍数的随机整数。
import random
# Generate 10 unique random numbers within a range
randomList = random.sample(range(0, 100, 5), 10)
print(randomList)
输出:
[75, 40, 20, 55, 15, 10, 5, 90, 95, 70]
列表排序
Python的sort()函数用于按升序(默认情况下)对列表中的随机整数进行排序。我们还可以通过指定其reverse = True参数来按降序对列表值进行排序。reverse的默认值为False。
示例1:使用sort()按升序排序列表元素
在这个示例中,我们将在范围为50到100、宽度为5的情况下生成5个随机数的列表,并使用sort()函数对它们进行排序。
import random
randomList = random.sample(range(50, 100, 5), 5)
print("Before sorting random integers list")
print(randomList)
# sort the list ascending order by default
randomList.sort()
print("After sorting random integers list")
print(randomList)
输出:
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)按降序对列表元素进行排序。
import random
randomList = random.sample(range(50, 100, 5), 5)
print("Before sorting random integers list")
print(randomList)
# sort the list descending order
randomList.sort(reverse=True)
print("After sorting random integers list")
print(randomList)
输出:
Before sorting random integers list
[70, 50, 80, 90, 85]
After sorting random integers list
[90, 85, 80, 70, 50]