zoukankan      html  css  js  c++  java
  • Python random模块

    Python random模块简介

    random模块用来生产伪随机数,random库是使用随机数的Python标准库。概率论角度来说,随机数是随机产生的数据(比如抛硬币),但时计算机是不可能产生随机值,真正的随机数也是在特定条件下产生的确定值,只不过这些条件我们没有理解,或者超出了我们的理解范围。计算机不能产生真正的随机数,那么伪随机数也就被称为随机数。

    random库包含两类函数,常用的有如下几个

      基本随机函数: seed(), random()

      扩展随机函数:randint(), getrandbits(), uniform(), randrange(), choice(), shuffle(),sample()

    基本随机函数

    Python中产生随机数使用随机数种子来产生。给定一个随机数种子,就能利用梅森旋转算法产生一系列随机序列。每一个数都是随机数,只要随机种子相同,产生的随机数和数之间的关系都是确定的。随机种子确定了随机序列的产生。

    seed()  初始化随机种子,默认为当前的系统时间

    seed(10)  # 产生种子10对应的序列

    random()  随机生成一个[0.0, 1.0]之间的小数

    >>> import random
    >>> random.seed(10)
    >>> random.random()
    0.5714025946899135
    >>> random.random()
    0.4288890546751146

    如果不使用随机数种子,它使用的是当前系统时间,后面产生的结果是完全不可再现的。而使用随机数种子,可以将随机数再现

    >>> import random
    >>> random.seed(10)
    >>> random.random()
    0.5714025946899135
    >>> random.seed(10)
    >>> random.random()
    0.5714025946899135

    扩展随机函数

    基本随机函数的功能比较单一,因此增加了一些扩展随机函数。

     1、randint()

    randint函数的函数原型是randint(a,b),用于生成一个指定范围内的整数。其中参数a是下限,参数b是上限,a必须小于等于b。生成的随机数n :    a <= n <= b

    >>> random.randint(1,3)
    2
    >>> random.randint(1,3)
    3
    >>> random.randint(1,3)
    1
    >>> random.randint(1,3)
    1

    2、uniform()

    uniform函数的函数原型是uniform(a,b),用于生成一个随机浮点数。两个参数中一个是上限,一个是下限。如果 a < b,则生成的随机数范围  a <= n <= b,如果 a > b,则生成随机数范围 b <= n <= a。

    >>> random.uniform(1,3)
    1.6555456232441863
    >>> random.uniform(1,3)
    1.4999933533728007
    >>> random.uniform(3,1)
    1.0943661817081767
    >>> random.uniform(3,1)
    1.0068860149210896

    3、randrange()

    randrange函数的函数原型是randrange(start, stop=None, step=1)。从指定范围内,按指定步长递增的集合中,获取一个随机数。如 rangdrange(1,20,2),就是相当于[1,3,5.....19]去一个随机数。结果和random.choice(range(10, 100, 2) 等效。步长默认为1,randrange(a),意为取 0 <= n < a的任意一个整数。

    >>> random.randrange(1,20,2)
    3
    >>> random.randrange(1,20,2)
    9
    >>> random.randrange(1,20)
    15
    >>> random.randrange(1,20)

    4、randchoice()

    randchoice函数的函数原型是randrange(sequence),获取一个有序序列的随机一个元素。这里的参数表示一个有序类型。列表,元组,字符串等都属于有序类型,字典、集合是无序的。

    >>> import random
    >>> L = [1,2,3,4,5]
    >>> random.choice(L)
    5
    >>> random.choice(L)
    1
    >>> random.choice(range(1,100,2))
    33

    5、sample()

    sample函数的函数原型是sample(sequence,k),表示从一个有序类型随机获取一个指定长度的片段。sample函数不会修改原有序列。

    >>> import random
    >>> L = [1,2,3,4,5]
    >>> random.sample(L,2)
    [4, 3]
    >>> random.sample(L,3)
    [1, 4, 2]
    >>> L
    [1, 2, 3, 4, 5]

    6、shuffle()

    shuffle函数的函数原型是shuffle(x, random=None),用于将一个有序序列的元素打乱。

    >>> import random
    >>> L = [1, 2, 3, 4, 5]
    >>> random.shuffle(L)
    >>> L
    [4, 3, 1, 5, 2]

    random模块比较常用的函数基本就这些,还有许多不常用的。如正太分布、对数正太分布、卡玛分布等等。

  • 相关阅读:
    Timer定时任务
    spring boot配置多数据源
    消费者模块调用提供者集群报错
    修改windHost文件
    spring常用注解+Aop
    添加ClustrMaps
    无题
    2020年3月21日 ICPC训练联盟周赛,Benelux Algorithm Programming Contest 2019
    2020年3月14日 ICPC训练联盟周赛,Preliminaries for Benelux Algorithm Programming Contest 2019
    2020.4.12 个人rating赛 解题+补题报告
  • 原文地址:https://www.cnblogs.com/jkin/p/12768434.html
Copyright © 2011-2022 走看看