Python随机数生成模块random的简单示例
对python这个高级语言感兴趣的小伙伴,下面一起跟随编程之家 52php.cn的小编两巴掌来看看吧!
一、概述random模块 用于生成伪随机数 之所以称之为伪随机数,是因为真正意义上的随机数(或者随机事件)在某次产生过程中是按照实验过程中表现的分布概率随机产生的,其结果是不可预测的,是不可见的。而计算机中的随机函数是按照一定算法模拟产生的,其结果是确定的,是可见的。我们可以这样认为这个可预见的结果其出现的概率是100%。所以用计算机随机函数所产生的“随机数”并不随机,是伪随机数。 计算机的伪随机数是由随机种子根据一定的计算方法计算出来的数值。所以,只要计算方法一定,随机种子一定,那么产生的随机数就是固定的。 只要用户或第三方不设置随机种子,那么在默认情况下随机种子来自系统时钟。 Python的这个库在底层使用通用的算法,经过长久的考验,可靠性没得说,但绝对不能用于密码相关的功能。 二、基本方法random.seed(a=None,version=2) 初始化伪随机数生成器。如果未提供a或者a=None,则使用系统时间为种子。如果a是一个整数,则作为种子。 random.getstate() 返回一个当前生成器的内部状态的对象 random.setstate(state) 传入一个先前利用getstate方法获得的状态对象,使得生成器恢复到这个状态。 random.getrandbits(k) 返回一个不大于K位的Python整数(十进制),比如k=10,则结果在0~2^10之间的整数。 三、针对整数的方法random.randrange(stop) random.randrange(start,stop[,step]) 等同于choice(range(start,stop,step)),但并不实际创建range对象。 random.randint(a,b) 返回一个a <= N <= b的随机整数N。等同于 randrange(a,b+1) 四、针对序列类结构的方法random.choice(seq) 从非空序列seq中随机选取一个元素。如果seq为空则弹出 IndexError异常。 random.choices(population,weights=None,*,cum_weights=None,k=1) 3.6版本新增。从population集群中随机抽取K个元素。weights是相对权重列表,cum_weights是累计权重,两个参数不能同时存在。 random.shuffle(x[,random]) 随机打乱序列x内元素的排列顺序。只能针对可变的序列,对于不可变序列,请使用下面的sample()方法。 random.sample(population,k) 从population样本或集合中随机抽取K个不重复的元素形成新的序列。常用于不重复的随机抽样。返回的是一个新的序列,不会破坏原有序列。要从一个整数区间随机抽取一定数量的整数,请使用sample(range(10000000),k=60)类似的方法,这非常有效和节省空间。如果k大于population的长度,则弹出ValueError异常。 五、真值分布random模块最高端的功能其实在这里。 random.random() 返回一个介于左闭右开[0.0,1.0)区间的浮点数 random.uniform(a,b) 返回一个介于a和b之间的浮点数。如果a>b,则是b到a之间的浮点数。这里的a和b都有可能出现在结果中。 random.triangular(low,high,mode) 返回一个low <= N <=high的三角形分布的随机数。参数mode指明众数出现位置。 random.betavariate(alpha,beta) β分布。返回的结果在0~1之间 random.expovariate(lambd) 指数分布 random.gammavariate(alpha,beta) 伽马分布 random.gauss(mu,sigma) 高斯分布 random.lognormvariate(mu,sigma) 对数正态分布 random.normalvariate(mu,sigma) 正态分布 random.vonmisesvariate(mu,kappa) 卡帕分布 random.paretovariate(alpha) 帕累托分布 random.weibullvariate(alpha,beta) 六、可选择的生成器class random.SystemRandom([seed]) 使用 os.urandom() 方法生成随机数的类,由操作系统提供源码,不一定所有系统都支持 七、典型的例子
下面是生成一个包含大写字母A-Z和数字0-9的随机4位验证码的程序 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- python – 如何检查数字是否是基数b的幂?
- python 通过thrift操作hbase的完整代码
- python – 使用重载的比较运算符从int派生类访问原始int比
- 在Python中使用scipy kmeans和kmeans2集群时出现问题
- python – 你如何给wagtail / django页面提供一个自定义URL
- Python Selenium Exception AttributeError:“’Service’
- Python Pandas – 时间序列的随机抽样
- Python操作redis数据库!
- 其余的铁血运动异常在哪里?
- python – 在flask视图中记录用户操作的最佳方法是什么?