zl程序教程

您现在的位置是:首页 >  Python

当前栏目

python/测试/测开-面试准备第1天

2023-03-20 14:54:00 时间

解决方案

  • 从今天开始我们开始整理面试题,开始刷题【python】【测试】相关。

面试题01:如何使用random模块生成随机数、实现随机乱序和随机抽样?

点评:送人头的题目,因为Python标准库中的常用模块应该是Python开发者都比较熟悉的内容,这个问题回如果答不上来,整个面试基本也就砸锅了。

python random模块解析

  1. random.random()函数可以生成[0.0, 1.0)之间的随机浮点数。
  2. random.uniform(a, b)函数可以生成[a, b]或[b, a]之间的随机浮点数。
  3. random.randint(a, b)函数可以生成[a, b]或[b, a]之间的随机整数。
  4. random.shuffle(x)函数可以实现对序列x的原地随机乱序。
  5. random.choice(seq)函数可以从非空序列中取出一个随机元素。
  6. random.choices(population, weights=None, *, cum_weights=None, k=1)

函数可以从总体中随机抽取(有放回抽样)出容量为k的样本并返回样本的列表,可以通过参数指定个体的权重,如果没有指定权重,个体被选中的概率均等。

  1. random.sample(population, k)

函数可以从总体中随机抽取(无放回抽样)出容量为k的样本并返回样本的列表。

进阶

random模块提供的函数除了生成均匀分布的随机数外,还可以生成其他分布的随机数,例如random.gauss(mu, sigma)函数可以生成高斯分布(正态分布)的随机数;random.paretovariate(alpha)函数会生成帕累托分布的随机数;random.gammavariate(alpha, beta)函数会生成伽马分布的随机数。

举例

来自菜鸟教程:https://www.runoob.com/python/func-number-random.html

#!/usr/bin/python
# -*- coding: UTF-8 -*-

import random
import string

# 随机整数:
print random.randint(1,50)

# 随机选取0到100间的偶数:
print random.randrange(0, 101, 2)

# 随机浮点数:
print random.random()
print random.uniform(1, 10)

# 随机字符:
print random.choice('abcdefghijklmnopqrstuvwxyz!@#$%^&*()')

# 多个字符中生成指定数量的随机字符:
print random.sample('zyxwvutsrqponmlkjihgfedcba',5)

# 从a-zA-Z0-9生成指定数量的随机字符:
ran_str = ''.join(random.sample(string.ascii_letters + string.digits, 8))
print ran_str

# 多个字符中选取指定数量的字符组成新字符串:
print ''.join(random.sample(['z','y','x','w','v','u','t','s','r','q','p','o','n','m','l','k','j','i','h','g','f','e','d','c','b','a'], 5))

# 随机选取字符串:
print random.choice(['剪刀', '石头', '布'])

# 打乱排序
items = [1, 2, 3, 4, 5, 6, 7, 8, 9, 0]
print random.shuffle(items)