Python读书笔记-进阶篇-1.Random

random库是Python3中产生随机数的标准库,包括了基本随机数函数seed()、random()以及一些扩展的随机数函数。

首先看下Random类的原型:class Random(_random.Random),继承自内置类_random,因此Random类中拥有了基础的随机数函数random()。下面来一一介绍下各个函数的涵义以及用法。

使用random裤需要引入random包

#! /usr/bin/env python

import random

1.random()

random-> x in the interval [0, 1):产生一个区间在[0,1)内的随机数

print(random.random())

2.seed()

seed()->设置随机数生成器的种子,默认为系统时间,当种子相同时将产生相同的随机数。

random.seed(100)
print(random.random())
random.seed(100)
print(random.random())

# 0.1456692551041303
# 0.1456692551041303

3.randrange()

randrange()-> Choose a random item from range(start, stop[, step]):生成一个在区间[a,b)之间以step为步长的随机整数,即在[start,start+step*1,start+step*2,...,start+step*i,stop)之间随机一个整数

print(random.randrange(12,100,5))
print(random.randrange(12,100,5))
print(random.randrange(12,100,5))

# 82
# 37
# 72

4.randint()

randint()->Return random integer in range [a, b], including both end points.:生成一个在闭区间[a,b]之间的随机整数

print(random.randint(1,10))
print(random.randint(1,10))
print(random.randint(1,10))

# 6
# 7
# 9

5.choice()

choice()->Choose a random element from a non-empty sequence.:在一个非空序列中随机一个元素.

import string
print(random.choice(string.ascii_letters))
print(random.choice(string.ascii_letters))
print(random.choice(string.ascii_letters))

# Z
# h
# I

6.shuffle()

shuffle()->Shuffle list x in place, and return None.:将列表重新排序,将序列重排序,修改原序列,没有返回值。只能用于列表。

seq=[1,2,3,4,5,6,7,8,9]
print(id(seq))
random.shuffle(seq)
print(id(seq))
print(seq)

# 35417424
# 35417424
# [8, 7, 5, 1, 3, 4, 6, 9, 2]

7.sample()

sample()->Chooses k unique random elements from a population sequence or set.:从指定序列中获取指定长度的元素并随机排序,sample函数不会修改原有的序列。

list1=[1,2,3,4,5]
tuple2=(1,2,3,4,5)
str3="12345"
print(random.sample(list1,3))
print(random.sample(tuple2,3))
print(random.sample(str3,3))

# [3, 2, 4]
# [2, 5, 1]
# ['2', '3', '5']

8.choices()

choices()->Return a k sized list of population elements chosen with replacement:根据列表中各个元素的随机概率,获取列表中的k个数据。函数原型为  choices(self, population, weights=None, *, cum_weights=None, k=1),各个参数涵义:

population:给定的列表序列

weights:population序列中各个元素随机过程中的概率

cum_weights:population序列中各个元素的累计权重列表,元素个数必须与population个数相同

weights与cum_weights不能同时都赋值

print(random.choices([1, 2, 3, 4, 5], [1, 5, 1, 10, 11], k=2)) 

# 元素序列 :    1    2    3    4     5
# 产生概率 :    1    5    1    10    11
# 随机序列中的2个元素

#[4, 5]
  

9.uniform()

uniform()->Get a random number in the range [a, b) or [a, b] depending on rounding.:获取区间[a,b)或[a,b]中的一个随机数

print(random.uniform(1.24,3.1415))
print(random.uniform(1,6))

# 2.430950596925104
# 5.816578918504316

10其他函数

# 三角分布的随机数 random.triangular(low, high, mode)
# 高斯分布的随机数(稍快) random.gauss(mu, sigma)
# beta β分布的随机数 random.betavariate(alpha, beta)
# 指数分布的随机数 random.expovariate(lambd)
# 伽马分布的随机数 random.gammavariate(alpha, beta)
# 对数正态分布的随机数 random.lognormvariate(mu, sigma)
# 正态分布的随机数 random.normalvariate(mu, sigma)
# 冯米塞斯分布的随机数 random.vonmisesvariate(mu, kappa)
# 帕累托分布的随机数 random.paretovariate(alpha)
# 韦伯分布的随机数 random.weibullvariate(alpha, beta)

 

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值