Python 面试题, 如何使用 Python 的 random 模块生成随机数,实现随机乱序和随机抽样?
Python 面试题, 如何使用 Python 的 random 模块生成随机数,实现随机乱序和随机抽样?
QA
Step 1
Q:: 如何使用 Python 的 random 模块生成随机数?
A:: 在 Python 中,可以使用 random 模块生成随机数。常用方法包括 random.random() 生成一个 [0.0, 1.0) 之间的随机浮点数;random.randint(a, b) 生成一个 [a, b] 之间的随机整数;random.uniform(a, b) 生成一个 [a, b] 之间的随机浮点数。此外,还可以使用 random.choice(seq)
从序列中随机选择一个元素。
Step 2
Q:: 如何使用 Python 的 random 模块实现随机乱序?
A:: 可以使用 random.shuffle(x) 来对列表 x 进行原地随机乱序(洗牌)。注意,random.shuffle() 会直接修改原始列表,不会返回新的列表。如果不想修改原始列表,可以使用 random.sample(x, len(x))
生成乱序的新列表。
Step 3
Q:: 如何使用 Python 的 random 模块进行随机抽样?
A:: random.sample(population, k) 可以用来从一个序列 population 中随机抽取 k 个不重复的元素,返回一个新的列表。如果需要重复抽样,可以使用 random.choices(population, k)
返回一个包含 k 个元素的列表,其中元素可以重复。
Step 4
Q:: random.seed()
的作用是什么?
A:: random.seed()
用来初始化随机数生成器。通过提供一个种子值,您可以确保每次运行程序时生成的随机数序列是相同的,这在调试和测试时非常有用。没有指定种子时,随机数生成器会使用系统时间或其他随机源来生成不同的随机数序列。
Step 5
Q:: 如何在生产环境中控制随机性?
A:: 在生产环境中,有时候需要控制随机性,例如在某些算法中使用随机数或进行随机抽样时,为了确保结果的可重现性,可以使用 random.seed()
来设置种子。同时,通过对随机性有控制可以避免某些潜在的bug,尤其是在分布式系统中。