zoukankan      html  css  js  c++  java
  • Python random模块下的常用函数小结

    random模块下的方法详解:

    1.random.random()

    随机生成一个[0,1)之间的浮点数。
    

    2.random.randint(a,b)

    随机生成[a,b]范围内一个整数。
    

    3.random.randrange(a,b,step)

    不指定step,随机生成[a,b)范围内一个整数。
    指定step,step作为步长会进一步限制[a,b)的范围,比如randrange(0,11,2)意即生成[0,11)范围内的随机偶数。
    不指定a,则默认从0开始。
    

    4.random.uniform(a,b)

    产生[a,b]范围内一个随机浮点数。
    
    uniform()的a,b参数不需要遵循a<=b的规则,即a小b大也可以,此时生成[b,a]范围内的随机浮点数。但如果上面的三个方法采用这种方式就会产生TypeError或者ValueEeeor错误。
    

    5.random.choice(seq)

    从非空序列中随机选取一个数据并带回,该序列可以是list、tuple、str、set。
    如果序列为空,则弹出IndexError错误。
    
    import random
    print(random.choice('biu')) #u
    

    6.random.choices(population,weights=None,*,cum_weights=None,k=1)
    Python3.6版本新增。

    population:集群。
    weights:相对权重。
    cum_weights:累加权重。
    k:选取次数。
    作用:从集群中随机选取k次数据,返回一个列表,可以设置权重。
    注意每次选取都不会影响原序列,每一次选取都是基于原序列。
    
    关于random.choices()函数我举几个例子:
    
    import random
    a = [1,2,3,4,5]
    #1
    print(random.choices(a,k=5))
    #2
    print(random.choices(a,weights=[0,0,1,0,0],k=5))
    #3
    print(random.choices(a,weights=[1,1,1,1,1],k=5))
    #4
    print(random.choices(a,cum_weights=[1,1,1,1,1],k=5))
    

    对于 #1–#4 的每一条语句不妨各自写一个循环语句让它输出个十遍八遍的,你就足以看出用法了。
    这里我只提出运行结果和结论:

    #1 : 重复输出10次列表a中的各个成员出现概率基本持平。
    #2 : 重复输出10次每次输出均得到[3,3,3,3,3]结果。
    #3 : 重复输出10次列表a中的各个成员出现概率基本持平。
    #4 : 重复输出10次每次输出均得到[1,1,1,1,1]结果。
    

    结论:

    参数weights设置相对权重,它的值是一个列表,设置之后,每一个成员
    被抽取到的概率就被确定了。
    比如weights=[1,2,3,4,5],那么第一个成员的概率
    就是P=1/(1+2+3+4+5)=1/15。
    
    cum_weights设置累加权重,Python会自动把相对权重转换为
    累加权重,即如果你直接给出累加权重,那么就不需要
    给出相对权重,且Python省略了一步执行。
    比如weights=[1,2,3,4],那么cum_weights=[1,3,6,10]
    这也就不难理解为什么cum_weights=[1,1,1,1,1]输出全是第一个成员1了。
    

    7.random.sample(population,k)

    从集群population中选取k个元素,返回一个列表,集群
    可以是list、tuple、str、set。
    
    与random.choices()的区别:一个是选取k次,一个是选取k个,
    选取k次的相当于选取后又放回,选取k个则选取后不放回。
    故random.sample()的k值不能超出集群的元素个数。
    
    import random
    a = ['ahh','hhh','zzz','emm']
    print(random.sample(a,3))
    #['hhh', 'zzz', 'ahh']
    

    8.random.shuffle(lst)

    随机打乱序列lst的顺序并重新排序,注意它无返回值,另外lst只能是一个可变序列,且只支持有下标的序列,因此它也不适用于set,你最好只把它用在列表上。
    

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

    设置随机种子的,如果不设置随机种子,则默认以系统时间作为随机种子。一般用不上。
    

    参考:https://blog.csdn.net/ckk727/article/details/99548223

  • 相关阅读:
    Js获取或计算时间的相关操作
    SqlServer删除表中重复的记录并保留一条
    获取js文件后的参数
    谷歌浏览器官方下载地址
    ionic项目中实现发短信和打电话
    ui-router传递参数
    ng-options用法详解
    html5 localStorage(本地存储)
    cordova插件之Local Notification(本地通知)
    AngularJS $http service
  • 原文地址:https://www.cnblogs.com/nmydt/p/14256322.html
Copyright © 2011-2022 走看看