第0001题 : 产生随机数(顺便读random模块官方文档)

看这个之前我准备先看一下random模块的官方文档...

在整个随机模块中,  最基础的就是random, 它产生一个 [0.0, 1.0)的浮点数. 这个模块下所有的函数实际上是绑定在一个叫做random.Ramdom的类的隐藏实例下的, 当然你可以自己实例化这个类从而得到新的随机数生成器, 同时random模块下还有一个叫做SystemRandom的类, 它使用系统函数 os.urandom()用操作系统提供的随机资源来来产生随机数.(不知所云...) 只挑了一部分看起来有用的函数...

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

这个用来初始化随机数生成器, 如果a被忽略(也就是取默认值None), 那么就会以当前的系统时间为种.(如果系统提供了相应的随机资源则游戏那使用随机资源为种而不用系统时间), 如果a是一个int, 那么直接使用它. 当version是2的时候, str, bytes, bytearray 对象被转化为一个int 并且它所有的位都被使用, 如果版本1, 那么使用对a进行hash()产生的数值做种.

random.getrandbits(k)

返回一个k位随机的integer

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

返回一个随机选择的元素从range(start, stop, step), 其实这和choice(range(start, stop, step))效果相同, 但是并不实际产生range对象...

random.randint(a, b)

返回一个 a <= N <= b 的整数, 相当于 randrange(a, b+1)

random.choice(seq)

从非空序列seq中随机选择一个元素, 如果传入的序列为空, 产生IndexError异常..

random.shuffle(x[, random])

对x进行随机排列, 可选参数是一个所需0个参数的函数, 它应该返回一个随机的浮点数范围是[0.0, 1.0), 默认来讲这个函数是random().

值得注意的是这个函数改变的是所传进去的列表x本身, 而返回值是None, 所以必须传一个引用进去, 这样使用没有任何意义 : random.shuffle([1,2,3,4])

random.sample(population, k)

返回一个长度为k的list, 从序列population中选出k个不同的元素来组成该list, 一般用来做抽样调查... (这里要注意的是产生的list中不会含有相同的元素, 如果k大于len(population), 会报错...)

剩下的一些函数感觉就是纯数学了, 也就不研究了...

源代码倒是很简单 ...

1 import string, random
2
3 field = string.ascii_letters + string.digits
4 def getRandom():
5     return "".join(random.sample(field, 4))
6 def getRandomList():
7     return "-".join([getRandom() for _ in range(4)])
8 print(getRandomList())
时间: 2024-08-01 15:34:38

第0001题 : 产生随机数(顺便读random模块官方文档)的相关文章

终端开发补充 : 读 curses模块官方文档...

curses是一个提供终端屏幕打印和键盘处理的库, 我个人的理解就是终端里的gui(当然它是基于文本的)... 写2048的时候用到了这个库, 所以现在过来好好研究一下这个库... 下面是文档内容 : 首先在你做任何事之前, 你必须先调用 initscr() 初始化curses, 这个函数主要的作用是决定当前终端的类型, 然后发送一些必要的设置给终端, 并且创建独立的内部数据结构. 如果成功初始化的话, 该函数会返回一个代表屏幕的对象, 我们通常称为 stdscr (C语言就有的惯例). 另一方

[dpdk] 读官方文档(2)

续前节.切好继续: 一,文档里提到uio_pci_generic, igb_uio, vfio_pci三个内核模块,完全搞不懂,以及dpdk-devbind.py用来查看网卡状态,我得到了下边的输出: [[email protected] tools]# ./dpdk-devbind.py --status Network devices using DPDK-compatible driver ============================================ <none

读BeautifulSoup官方文档之html树的搜索(2)

除了find()和find_all(), 这里还提供了许多类似的方法我就细讲了, 参数和用法都差不多, 最后四个是next, previous是以.next/previous_element()来说的... Signature: find_parents(name, attrs, string, limit, **kwargs) Signature: find_parent(name, attrs, string, **kwargs) Signature: find_next_siblings(

[dpdk] 读官方文档(3)

续前节, 测试小程序 1. 想编译测试程序首先需要设置两个环境变量,为什么呢,因为测试程序的Makefile里用了... rpm装了打包好的devel包,这个rpm也会自带这两个环境变量.就是说写第三方程序的时候,习惯上,约定了这两个环境变量. [[email protected] tools]# cat ~/env.sh export RTE_SDK=/root/dpdk-16.07 export RTE_TARGET=x86_64-native-linuxapp-gcc [[email pr

读BeautifulSoup官方文档之html树的修改

修改html树无非是对其中标签的改动, 改动标签的名字(也就是类型), 属性和标签里的内容... 先讲这边提供了很方便的方法来对其进行改动... 1 soup = BeautifulSoup('<b class="boldest">Extremely bold</b>') 2 tag = soup.b 3 4 tag.name = "blockquote" 5 tag['class'] = 'verybold' 6 tag['id'] = 1

读BeautifulSoup官方文档之html树的打印

prettify()能返回一个格式良好的html的Unicode字符串 : markup = '<a href="http://example.com/">I linked to <i>example.com</i></a>' soup = BeautifulSoup(markup) soup.prettify() # '<html>\n <head>\n </head>\n <body>\

读BeautifulSoup官方文档之html树的搜索(1)

之前介绍了有关的四个对象以及他们的属性, 但是一般情况下要在杂乱的html中提取我们所需的tag(tag中包含的信息)是比较复杂的, 现在我们可以来看看到底有些什么搜索的方法. 最主要的两个方法当然是find_all()和find(), 两者大致思路相同, 只不过一个前者返回符合条件的所有tags, 后者只返回一个tag. 我们先仔细看看find_all. Signature: find_all(name, attrs, recursive, string, limit, **kwargs) f

读vue-cli3 官方文档的一些学习记录

原来一直以为[email protected] 就是创建模板的工具,读了官方文档才知道原来这么有用,不少配置让我长见识了 Prefetch 懒加载配置 懒加载相信大家都是知道的,使用Import() 语法就可以在需要的时候加载了,但是读了官方文档Prefetch一节后,发现事情并没有想象的那么简单. 文档写的很清楚,Prefetch是在空闲的时候就加载一些不着急的文件,并且import默认是加上了Prefetch的,也就是说你使用了import可能并不是你想要的结果(比如用户点击某个按钮才触发加

2018年04月25日 logging模块、os.name模块、sys模块、random模块、string模块

logging模块 官方文档:https://docs.python.org/3.6/library/logging.html ''' 日志记录模块 日志的几个级别 debug info warning error critical ''' import logging # logging.basicConfig(level=logging.DEBUG) logging.basicConfig(level=logging.DEBUG, format='%(asctime)s %(filename