Python 通过 random 模块定义了一组函数,专门用于生成或操作随机数。
random 模块中的函数依赖于一个伪随机数生成器函数 random(),它会生成一个 0.0 到 1.0 之间的随机浮点数。这类特定类型的函数在很多游戏、彩票或任何需要生成随机数的应用程序中都有广泛的应用。
让我们来看一个使用 random() 函数在 Python 中生成随机数字的例子。
import random
num = random.random()
print(num)
输出:
0.30078080420602904
在 Python 中生成随机数的不同方式
使用 Python random 模块中的函数,有多种方法可以生成随机数。让我们来看看几种不同的方式。
使用 choice() 生成随机数
Python 中的 random.choice()是一个内置函数,它可以从列表、元组或字符串中返回一个随机项。
# import random
import random
# prints a random value from the list
list1 = [1, 2, 3, 4, 5, 6]
print(random.choice(list1))
# prints a random item from the string
string = "striver"
print(random.choice(string))
输出:
5
t
使用 randrange() 生成随机数
random 模块提供了一个函数,可以从指定范围内生成 Python 随机数,并且还允许包含步长,这个函数叫做 randrange()。
# importing "random" for random operations
import random
# using choice() to generate a random number from a
# given list of numbers.
print("A random number from list is : ", end="")
print(random.choice([1, 4, 8, 10, 3]))
# using randrange() to generate in range from 20
# to 50. The last parameter 3 is step size to skip
# three numbers when selecting.
print("A random number from range is : ", end="")
print(random.randrange(20, 50, 3))
输出:
A random number from list is : 4
A random number from range is : 41
使用 seed() 生成随机数
Python 的 random.seed()函数用于保存随机函数的状态,以便在相同机器或不同机器上多次执行代码时(针对特定的种子值)能生成相同的随机数。种子值是生成器生成的上一个数值。如果是第一次执行且没有上一个值,它会使用当前系统时间。
# importing "random" for random operations
import random
# using random() to generate a random number
# between 0 and 1
print("A random number between 0 and 1 is : ", end="")
print(random.random())
# using seed() to seed a random number
random.seed(5)
# printing mapped random number
print("The mapped random number with 5 is : ", end="")
print(random.random())
# using seed() to seed different random number
random.seed(7)
# printing mapped random number
print("The mapped random number with 7 is : ", end="")
print(random.random())
# using seed() to seed to 5 again
random.seed(5)
# printing mapped random number
print("The mapped random number with 5 is : ", end="")
print(random.random())
# using seed() to seed to 7 again
random.seed(7)
# printing mapped random number
print("The mapped random number with 7 is : ", end="")
print(random.random())
输出:
A random number between 0 and 1 is : 0.510721762520941
The mapped random number with 5 is : 0.6229016948897019
The mapped random number with 7 is : 0.32383276483316237
The mapped random number with 5 is : 0.6229016948897019
The mapped random number with 7 is : 0.32383276483316237
使用 shuffle() 生成随机数(打乱序列)
shuffle()函数用于打乱序列(列表)的顺序。打乱意味着改变序列中元素的位置。在这里,打乱操作是直接在原列表上进行的(In place)。
# import the random module
import random
# declare a list
sample_list = [‘A‘, ‘B‘, ‘C‘, ‘D‘, ‘E‘]
print("Original list : ")
print(sample_list)
# first shuffle
random.shuffle(sample_list)
print("
After the first shuffle : ")
print(sample_list)
# second shuffle
random.shuffle(sample_list)
print("
After the second shuffle : ")
print(sample_list)
输出