• random——伪随机数生成模块


    random——伪随机数生成模块

    转自:https://blog.csdn.net/zhtysw/article/details/79978197

           该模块包含构造伪随机数生成器的多个方法。对于整数,伪随机数有统一的选择范围;对于序列,选择的随机元素有统一标准,一个是在当前列表中进行随机排序,另一个是从种子样本中随机生成一个序列。

           实际应用中,该模块有专用函数生成符合均匀分布、正态分布、对数分布、负指数分布、伽马分布、贝塔分布的函数。对于生成角,只支持冯·米塞斯分布。几乎所有的模块函数都依赖于基本函数random(),该函数在半开放范围[0.0,1.0)内均匀地生成随机浮点数。Python使用Mersenne Twister作为核心生成器。它生成53位精度浮点数,周期为2 ** 19937-1。

    1. 簿记函数

    random. seed(a=None, version=2)

           初始化随机数生成器。如果a被省略或被赋值为None,则使用当前系统时间为随机源;如果当前操作系统提供随机数源,其优先级高于系统时间。如果a是一个整数,那么直接使用它。

    random.getstate()

           捕获当前随机数生成器的内部状态,并将其返回。

    random.setstate(state)

           state应当为在调用该函数之前调用getstate()函数时获取的生成器状态值,并且在执行setatate()后,生成器将会回到以前那个状态。

    random. getrandbits(k)

           返回一个k位的整数,该整数每位都由随机数构成。

    2. 针对整数的随机函数

    random. randrange(stop)

    random. randrange(start, stop[, step])

           该函数等价于choice(range(start, stop, step))或choice(range(stop))意味着给出的随机值属于后面参数定义的值的范围内。

    random.randint(a, b)

           返回一个随机整数,这个整数大于等于a小于等于b。

    3. 针对序列的随机函数

    random.choice(seq)

           从非空序列seq中随机返回一个元素。

    random. choice(population, weights=None, *, cum_weights=None, k=1)

           从population中随机选择k个可修改的元素组成一个新的列表,并将其返回。population不能为空。如果weights(权重序列)被给出,选择将会根据相应的权重规划而进行。如果cum_weights被给出,选择将会依据累计权重的方式进行。(类似于:权重序列为[1,2,3,4],累计下来的结果是[1,3,6,10])。

    random. shuffle(x[, random])

           将序列x随机混合。可选参数random为0参数函数,它会随机返回[0.0, 1.0)内的一个浮点数。

    random.sample(population, k)

           从population这个序列或集合中随机选择非重复的k个元素组成一个新的列表,该函数用于非替换的随机取样样本。

    4. 实数域内概率分布模型所对应函数

           该模块内的随机函数,其输出的随机值符合其函数名所示的概率分布模型。

    random.random()

           从[0.0, 1.0)中随机返回一个浮点数。

    random.uniform(a, b)

           从a与b确定的范围中随机返回一个浮点数。

    random.triangular(low, high, mode)

           返回一个随机浮点数N,low<=N<=high,并且mode一定在这个范围内。mode被定义为该区间的重点,给出以它为中点的对称分布。

    random.betavariate(alpha, beta)

           Beta(β)分布,两个参数必须都大于零,返回值在0与1之间。

    random.expovariate(lambd)

           指数分布,lambd为1.0处于该分布被期望的均值。

    random. gammavariate(alpha, beta)

           Gamma(伽马γ)分布,参数必须大于零。分布函数等价于:

             x ** (alpha -1) * math.exp(-x / beta)

    pdf(x) =  --------------------------------------

                math.gamma(alpha) * beta ** alpha

    random.gauss(mu, sigma)

           高斯(正态)分布,mu是均值,sigma是标准差。

    random. lognormvariate(mu, sigma)

           对数正态分布。如果你在这个分布中采取自然对数,你会得到一个均值为mu,标准差为sigma的正态分布。

    random. normalvariate(mu, sigma)

           正态分布,比gauss(mu, signa)实现的慢。

    random.vonmisesvariate(mu, kappa)

           冯米塞斯分布。mu是角的平均弧度,范围[0, 2*pi];kappa是密度参数,它必须大于等于0。当kappa等于0时,该分布退化为[0, 2*pi]上的标准随机分布。

     

    random. paretovariate(alpha)

           帕累托分布,alpha是形状参数。

    random. weibullvariate(alpha, beta)

           威布尔分布,alpha为规模参数,beta是形状参数。

    5. 替代产生器

    class random. System([seed])

           使用os.urandom()函数从操作系统提供的源生成随机数的类。不适用于所有系统。不依赖于软件状态,并且序列不可重现。因此,seed()方法不起作用并被忽略。如果调用getstate()和setstate()方法会引发NotImplementedError。

    6. 重复性说明

           有时候能够重现伪随机数生成器产生的序列是十分有用的。通过重复使用随机数种子值,只要多个线程没有运行,相同的序列应该在一次又一次的运行中再现。

           在Python的版本中,大多数的随机模块实现的算法和种子函数都发生了一定的改变,但有两方面与其他程序中的随机模块没有差别:

    ①如果一个新的种子模块被添加,那么将配置一个向后兼容的播种机;

    ②如果给出相同的种子,生成器的random()模块会生成同样的序列。

  • 相关阅读:
    Nginx中的Rewrite的重定向配置与实践
    分析IP所用的网络
    转载理解inode
    windows server 2016 active directory 域控 BDC 转换 为 PDC 副域控 升级 为 主 域控 (适用于 主备 域控 在线状态)
    debian 安装 supervisor
    debian 系统安装配置chrony
    二维字典新增数据
    快速读取大文件的最后一行
    获取当前系统时间
    python3 的 filter 与 map
  • 原文地址:https://www.cnblogs.com/langqi250/p/10854820.html
Copyright © 2020-2023  润新知