看这个之前我准备先看一下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())