python 笔记random库的运用

1. random库的调用
import random
或者
from random import *
 
2.random库常用函数
函数 描述
seed() 初始化随机数种子,默认值为当前系统时间
random() 随机生成一个[0.0,1.0)之间的小数
randint(a,b) 随机生成一个在[a,b]中的整数
randrange(a,b,c) 随机生成一个在[a,b)之间以c为步长的整数
uniform(a,b) 随机生成一个[a,b]之间的随机小数
choice() 从序列类型(如列表)随机返回一个元素
shuffle() 将序列中的元素重新打乱后返回
2.实验
>>> random()
0.8212324692623353
>>> randint(1,10)
9
>>> randrange(1,10,2)
3
>>> uniform(1,5)
2.5155496299589983
>>> choice(range(20))
2
>>> s = [1,5,6,9,8,7]
>>> shuffle(s)
>>> print(s)
[1, 5, 9, 8, 7, 6]
>>> choice(s)
9
 
2.2 seed()函数的运用
在生成随机数前,可以先通过seed()函数指定随机数种子,随机数种子一般是一个整数。只要种子相同,每次生成的随机数序列也相同

2.2.例子
>>> "{}".format(randint(1,10))
'10'
>>> "{}".format(randint(1,10))
'1'
>>> seed(10)
>>> "{}".format(randint(1,10))
'10'
>>> "{}".format(randint(1,10))
'1'
 
我们对seed进行了两次赋值,第一次与第二次的结果完全相同,由此我们就可以知道随机数种子的作用了。

2.拓展
随机数和随机事件是不确定的,其结果不可预测且产生前不可预见。但计算机产生出来的随机数,结果是可以预见的,是可以确定的,因为计算机产生出来的随机数是算法的产物(Mersenne Twister算法),所以将计算机产生出来的结果称为“伪随机数”由上文的seed()函数就可以看出,random库每次产生的是伪随机数序列。

3 猜数游戏
Q:请预设一个在1~10之间的整数,让用户进行猜测,如果大于预设的数,则显示太大的提示,如果小于预设的数,则弹出太小的提示。如此循环,直到猜中预设的数字。

from random import *
num = randint(1,10)
tnum = eval(input("请猜测在0~9之间的一个整数:"))
while num != tnum:
if num < tnum:
print("Big")
tnum = eval(input("请再次猜测在0~9之间的一个整数:"))
elif num > tnum:
print("Small")
tnum = eval(input("请再次猜测在0~9之间的一个整数:"))
else:
print("您猜对了")

 
追加一个问题:如果要在最后显示猜测的总次数,需要对程序进行怎么样的修改?

from random import *
num = randint(1,10)
count = 1
tnum = eval(input("请猜测在0~9之间的一个整数:"))
while num != tnum:
count += 1
if num < tnum:
print("Big")
tnum = eval(input("请再次猜测在0~9之间的一个整数:"))
elif num > tnum:
print("Small")
tnum = eval(input("请再次猜测在0~9之间的一个整数:"))
else:
print("您猜对了")
print("您一共猜测{}次".format(count))

 
4. 车羊门问题
问题:

有3扇关闭的门,一扇门后面停着汽车,其余门后是山羊,只有主持人知道每扇门后面是什么。参赛者可以选择一扇门,在开启它之前,主持人会开启另外一扇门,露出门后的山羊,然后允许参赛者更换自己的选择。

请问:

认真分析一下,不换选择能有更高的几率获得汽车,还是换选择能有更高的几率获得汽车?

from random import * #引入random函数库
x = 12345 #游戏进行的次数
c = 0 #初始化换选择的次数
uc = 0 #初始化不换选择的次数
for i in range(1,x+1):
a = randint(1,3) #第一次选择的门
b = randint(1,3) #第二次选择的门
if a==b:
uc += 1 #当不变换选择时,将次数+1
else:
c += 1 #当变换选择时,将次数+1
print("不换选择可以获得汽车的概率:{}".format(uc/x))
print("换选择可以获得汽车的概率:{}".format(c/x))
-------------------------------------------------------------
#输出结果
不换选择可以获得汽车的概率:0.33584447144592955
换选择可以获得汽车的概率:0.6641555285540705
 
4.小结
不变换选择时,选到汽车的概率其实是1/3,要么你选择的就是汽车那扇门,要么选择的就是两只羊。
变换选择时,一共有三种情况,第一种就是一开始选中的就是汽车,改变选择后,得到羊。要么一开始选择的就是两只羊,变换选择必得汽车,故概率是2/3。
如此解释,加上程序的运行下,我们可以知道,变换选择,获得汽车的概率会更大!
————————————————
版权声明:本文为CSDN博主「Ultimate_dream」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/Ultimate_dream/article/details/105644648

猜你喜欢

转载自www.cnblogs.com/LQZ888/p/12753189.html