python中getrandbits函数用法_python random - 刘江的python教程

random

阅读: 8288

评论:1

random模块用于生成伪随机数。

真正意义上的随机数(或者随机事件)是按照实验过程中表现的分布概率随机产生的,其结果是不可预测的。而计算机中的随机数是所谓的随机函数按照一定算法模拟产生的,其结果是确定的,是可预测的。所以用计算机随机函数所产生的“随机数”并不随机,是伪随机数,绝对不可以用来生成密码。

1.计算机的伪随机数是由随机种子根据一定的计算方法计算出来的数值。所以,只要计算方法一定,随机种子一定,那么产生的随机数就是固定的。

2.如果用户不设置随机种子,那么随机种子默认来自系统时钟。

1. 基本方法

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之间的整数。

2. 针对整数的方法

注意:在使用后面的方法时,一定要小心区间的开闭!

random.randrange(stop)

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

等同于后面的choice(range(start,stop,step)),从range的范围内随机选择一个整数。这个方法并不实际创建range对象。

random.randint(a, b)

返回一个a <= N <= b的随机整数N。等同于randrange(a, b+1)。

3. 针对序列类型的方法

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个不重复的元素形成新的序列。常用于不重复的随机抽样。返回的是一个新的序列,不会破坏原有序列。比如从一个整数区间随机抽取一定数量的整数random.sample(range(10000000), k=60),这非常有效和节省空间。

如果k大于population的长度,则弹出ValueError异常。

4. 真值分布

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)

这个...请数学高手解答一下,囧。

5. 可选择的生成器

class random.SystemRandom([seed])

使用os.urandom()方法生成随机数的类,由操作系统提供源码,不一定所有系统都支持。

6. 重要的例子

>>> from random import *

>>> random() # 随机浮点数: 0.0 <= x < 1.0

0.37444887175646646

>>> uniform(2.5, 10.0) # 随机浮点数: 2.5 <= x < 10.0

3.1800146073117523

>>> randrange(10) # 0-9的整数:

7

>>> randrange(0, 101, 2) # 0-100的偶数

26

>>> choice(['win', 'lose', 'draw']) # 从序列随机选择一个元素

'draw'

>>> deck = 'ace two three four'.split()

>>> shuffle(deck) # 对序列进行洗牌,改变原序列

>>> deck

['four', 'two', 'ace', 'three']

>>> sample([10, 20, 30, 40, 50], k=4) # 不改变原序列的抽取指定数目样本,并生成新序列

[40, 10, 50, 30]

>>> # 6次旋转红黑绿轮盘(带权重可重复的取样),不破坏原序列

>>> choices(['red', 'black', 'green'], [18, 18, 2], k=6)

['red', 'green', 'black', 'black', 'red', 'black']

>>> # Deal 20 cards without replacement from a deck of 52 playing cards

>>> # and determine the proportion of cards with a ten-value

>>> # (a ten, jack, queen, or king).

>>> deck = collections.Counter(tens=16, low_cards=36)

>>> seen = sample(list(deck.elements()), k=20)

>>> seen.count('tens') / 20

0.15

>>> # Estimate the probability of getting 5 or more heads from 7 spins

>>> # of a biased coin that settles on heads 60% of the time.

>>> trial = lambda: choices('HT', cum_weights=(0.60, 1.00), k=7).count('H') >= 5

>>> sum(trial() for i in range(10000)) / 10000

0.4169

>>> # Probability of the median of 5 samples being in middle two quartiles

>>> trial = lambda : 2500 <= sorted(choices(range(10000), k=5))[2] < 7500

>>> sum(trial() for i in range(10000)) / 10000

0.7958

下面是生成一个包含大写字母A-Z和数字0-9的随机4位验证码的程序

import random

checkcode = ''

for i in range(4):

current = random.randrange(0,4)

if current != i:

temp = chr(random.randint(65,90))

else:

temp = random.randint(0,9)

checkcode += str(temp)

print(checkcode)

下面是生成指定长度字母数字随机序列的代码:

import random, string

def gen_random_string(length):

# 数字的个数随机产生

num_of_numeric = random.randint(1,length-1)

# 剩下的都是字母

num_of_letter = length - num_of_numeric

# 随机生成数字

numerics = [random.choice(string.digits) for i in range(num_of_numeric)]

# 随机生成字母

letters = [random.choice(string.ascii_letters) for i in range(num_of_letter)]

# 结合两者

all_chars = numerics + letters

# 洗牌

random.shuffle(all_chars)

# 生成最终字符串

result = ''.join([i for i in all_chars])

return result

if __name__ == '__main__':

print(gen_random_string(64))

评论总数: 1

random.weibullvariate(alpha, beta)是韦布尔分布

By

用户5888865032   On

2019年4月15日 10:12

回复

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/304498.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

让你的系统移动起来

最近一直在捣鼓linux系统&#xff0c;听一大哥说想搞好它&#xff0c;最简单的方法就是经常用&#xff0c;用的久了也就自然简单了。。就跟我们用windows一样。。在linux系统里&#xff0c;我最喜欢的是Ubuntu。。个人感觉它做的还不错&#xff0c;有丰富的三方软件支持&#x…

java一个界面用另一个界面的值_如何将参数/值从一个弹出窗口传递到Angular2中的另一个弹出窗口...

我在Angular2中有一个要求&#xff0c;我需要打开第一个弹出窗口&#xff0c;用户会输入一些值 . 在某些用户事件(即按钮单击)上&#xff0c;我需要关闭该弹出窗口并打开另一个弹出窗口&#xff0c;其中包含用户在第一个弹出窗口中输入的值 .我创建了一个plunker&#xff0c;我…

简约而不简单的 Django 新手图文教程

来源&#xff1a;cizixssegmentfault.com/a/1190000008387882本文面向&#xff1a;有python基础&#xff0c;刚接触web框架的初学者。环境&#xff1a;windows7&#xff0c;python3.5.1&#xff0c;pycharm专业版&#xff0c;Django 1.10版&#xff0c;pip3一、Django简介百度百…

通俗系列之同步、异步、阻塞和非阻塞

前言在日常的开发中&#xff0c;经常出现同步、异步、阻塞和非阻塞等概念。有些人搞不清楚什么代码是同步&#xff0c;什么代码是异步。有些人说我用异步了啊&#xff0c;为什么效率还是没提高呢&#xff1f;也许你是用异步了&#xff0c;但是可能是异步阻塞了。有些人一听说异…

python的matplotlib库内的函数_如何在matplotlib中找到函数下面的区域?

我是python和matplotlib库的新手&#xff0c;我试图在绘图中得到函数行下方的区域。我有一个变量a&amp&#xff1b;b&#xff0c;它在我的绘图中移动一个矩形。我也许可以使用原始数学来解决这个问题&#xff0c;但我想知道是否有一种更简单的方法来实现我正在尝试使用matp…

局域网一点通之组网、管网、用网1000问

(51cto.com)局域网一点通之组网、管网、用网1000问转载于:https://blog.51cto.com/laowu2517/241359

【直观详解】支持向量机SVM

【阅读时间】13min - 19min【内容简介】详解解读什么是支持向量机&#xff0c;如何解支持向量以及涉及的拉普拉斯乘子法&#xff0c;还有核方法的解读。1什么是支持向量机-SVM支持向量机-SVM(Support Vector Machine)从本质来说是一种&#xff1a;用一条线&#xff08;方程&…

C# 打印PDF文档的10种方法

操作PDF文档时&#xff0c;打印是常见的需求之一。针对不同的打印需求&#xff0c;可分多种情况来进行&#xff0c;如设置静默打印、指定打印页码范围和打印纸张大小、双面打印、黑白打印等等。经过测试&#xff0c;下面将对常见的几种PDF打印需求做一些归纳总结&#xff0c;这…

遗传算法经典实例代码_经典算法研究系列 之 深入浅出遗传算法

关注数学&#xff0c;关注AI&#xff0c;关注我们公众号ID&#xff1a;Math-AI经典算法研究系列遗传算法1初探遗传算法Ok&#xff0c;先看维基百科对遗传算法所给的解释&#xff1a;遗传算法是计算数学中用于解决最优化的搜索算法&#xff0c;是进化算法的一种。进化算法最初是…

java buffalo_随你怎么玩!Buffalo 网络硬盘新潮流

现代时尚的办公环境是怎样的&#xff1f;ADSL、无线网络、笔记本、还有咖啡&#xff0c;惬意地被沙发包裹起来&#xff0c;自由自在地网上冲浪……&#xff1b;当然仅仅有这些还是不够&#xff0c;我们需要视频会议、需要网络下载、甚至打印、扫描&#xff0c;还有需要随时随地…

关于Virtual-Hosting的理解

最近在Apache上架设Virtual-hosts 时&#xff0c;发现启动了httpd-vhost.conf 之后&#xff0c;再用IP 访问Main Server&#xff08;httpd.conf&#xff09;的设置就失效了。比如说原来 在 htdocs/下有一些应用程序&#xff0c;就不能够再访问到。用IP所有的请求就被转发到了&…

.NET gRPC核心功能初体验

gRPC是高性能的RPC框架&#xff0c; 有效地用于服务通信(不管是数据中心内部还是跨数据中心)。由Google开源&#xff0c;目前是一个Cloud Native Computing Foundation&#xff08;CNCF&#xff09;孵化项目。其功能包括&#xff1a;•双向流•强大的二进制序列化•可插拔的身份…

为什么我怎么也理解不了波粒二象性,是因为智商不够吗?

大家好&#xff0c;各位观众。如果你们之前不能完全理解波粒二象性&#xff08;现象本身&#xff0c;或者这个概念的内涵和外延&#xff09;。不用担心&#xff0c;我认为十有八九不是智商问题&#xff1a;量子物理的内容有太多“反常识”了。很多时候&#xff0c;是我们的脑袋…

python反射、闭包、装饰器_python之闭包、装饰器、生成器、反射

1. 函数的作用域1.在函数定义时候就固定&#xff0c;与调用位置无关&#xff0c;在调用的时候返回到函数定义的位置x1 #全局作用def f1(): #整个f1函数是定义阶段deff2():print(x)returnf2deffoo(func):x3func()#func()调用阶段x200 #这样定义x又变成全局了foo(f1()) #执行foo(…

设备间的连线图例

转载于:https://blog.51cto.com/51fashion/243017

化学版2048,你玩过吗?内含游戏链接

今天来给大家推荐一款游戏——Na&#xff08;钠&#xff09;&#xff0c;也可以叫它化学版2048。首先2048大家都不陌生&#xff0c;曾经火爆一时的小游戏&#xff0c;于14年由年仅19岁的意大利程序员加布里勒希鲁尼&#xff08;Gabriele Cirulli&#xff09;开发出来。2048游戏…

ajax jquery php_基于Ajax jquery的使用php登录

我使用基于PHP的登录表单与Ajax和jQuery以下是我的登录表单Please Sign InLoginRegister和我的阿贾克斯代码登录$("button#submit").click(function () {if ($("#username").val() "" || $("#password").val() "")$("…

sqlsession.selectlist 会返回null么_StackOverflow经典问题:代码中如何去掉烦人的“!=nullquot;判空语句...

推荐阅读&#xff1a;程序员引路人&#xff1a;腾讯T4曰“面试不仅仅是技术过硬就可以了&#xff0c;你还需要懂得这些”​zhuanlan.zhihu.com问题为了避免空指针调用&#xff0c;我们经常会看到这样的语句if (someobject ! null) { someobject.doCalc();}最终&#xff0c;项…

如何在 ASP.Net Core 中使用 Configuration Provider

ASP.NET Core 是一个开源的&#xff0c;跨平台的&#xff0c;精简的模块化框架&#xff0c;可用于构建高性能&#xff0c;可扩展的web应用程序&#xff0c; ASP.NET Core 中的数据配置常用 k-v 的形式存储&#xff0c;值得注意的是&#xff0c;新的数据配置还支持 层级方式&…

GdiPlus[30]: IGPPen: 线帽

StartCap 和 EndCap 属性分别用来读写两段的线帽, 测试图:StartCap 和 EndCap 测试代码:uses GdiPlus;procedure TForm1.FormPaint(Sender: TObject); constCapArr: array[0..8] of Byte (0, 1, 2, 3, $10, $11, $12, $13, $14); varGraphics: IGPGraphics;Pen: IGPPen;Pt1,Pt…