随机生成指定范围内的数 使用的是 Python random 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])
随机.randrange()函数返回给定范围内的随机整数,即start和stop。随机.randrandom()函数接受三个参数作为输入,即start、stop和width。在这三个参数中,两个参数start和width是可选的。
- start参数是一个随机范围中的起始或下限整数。如果没有传入start参数,则它的默认值为0(零)。
- stop参数是一个随机范围中的最后一个或上限整数。
- width参数是随机序列中每个数字之间的范围。这个参数是可选的,如果没有传入width参数,则它的默认值为1(一)。
在生成随机整数时,随机.randrange(start, stop, width)函数不包括end参数。stop参数是排除在随机数之外的,不会生成一个随机数。
例如,看看这个随机.randrange(3, 30, 3)函数,它将生成3到30之间的任意随机整数值,如3、6、9、12、……27。但是这个函数在生成随机数时不包括30。
在应用程序中生成随机数始终很重要,并且在日常生活中有多种实时用途。例如,生成并发送一个随机数给客户作为一次性密码,用于进行安全交易。另一个生成随机数的示例是在玩鲁棒游戏时生成随机骰子数。
示例1:随机.randrange()生成给定范围内的随机整数数
让我们看一个示例,我们将在给定范围内生成一个随机整数。这个示例展示了随机.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()函数的开始和停止参数中输入最小的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()”。
例如:
请看以下示例,我们违反了规则,将start参数设为大于stop参数的值,导致random.randrange()函数生成一个错误消息:
import random
randomNumber = random.randrange(10,5)
输出:
Python的random模块还有一些其他用于随机生成数字的函数,包括:
- choice()
- randint()
- sample()
- sort()
random.choice()
Python的random模块中有一个choice()函数,用于从列表或其他序列中随机选择一个元素。random.choice()函数用于从值列表中返回一个随机元素。
ramdom.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 表示结束范围。在生成随机数时,两个参数(start, stop)都包含在内。
random.randint() 生成随机整数列表的示例:
这个示例将使用 randint() 函数创建一个包含多个随机整数的列表。生成一个包含 1 到 100 之间的 5 个随机整数的列表,两个值都包含在内。
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()函数的step参数。
例如,使用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]
sort()方法
Python的 sort() 方法用于将列表中的随机整数按升序排列(默认情况下)。我们还可以通过指定其order为reverse=True来按降序排列列表的值。reverse的默认值为False。
示例1:使用sort()方法按升序排序列表元素
在这个示例中,我们将生成一个在50到100范围内、宽度为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]