• 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

    你有什么心态,就有什么样的人生。管不好自己的心态,注定你就是个弱者。
  • 相关阅读:
    (转)很简短,但读完你会感触良多!
    (转)让 win8 快速通过认证的5个提示
    WPF 资源路径解析
    47、SimpleOrientationSensor
    45、SplashScreen
    让IE6也支持position:fixed
    utf8编码引起js输出中文乱码的解决办法(实用)
    javascript的currying函数
    sicily 1036. Crypto Columns
    sicily 6774. Buying Mortadella
  • 原文地址:https://www.cnblogs.com/LQZ888/p/12753189.html
Copyright © 2020-2023  润新知