Python random标准库

以下所有内容来源于random Documentation
random库实现了不同分布的伪随机数生成器。该模块的几乎所有函数均依赖于基本函数random()函数,该函数在半开区间[0.0, 1.0)等概率地产生一个随机浮点数。Python使用 Mersenne Twister算法作为核心生成器。作为目前使用最广泛的久经考验的伪随机数生成器之一,其具有很多优点,But being completely determistic(不知道怎么得体的翻译),它并不具有普适性,尤其是密码领域完全不适用。

该模块的所有函数均是random.Random类的实例的方法,所以,可以实例化该类来不共享随机种子,这种方式尤其适用于多线程程序。也可以以该类为父类实现自己的类从而使用其他的随机数生成器,只需要覆写random(), seed(), getstate(), setstate(), jumpahead()函数。也可以提供getrandbits函数从而使用randrange()函数。

注意:该模块不能被适用于安全目的,应该使用os.urandom()或者SystemRandom如果需要密码安全伪随机数生成器。

下面为函数的说明:

random.seed(a=None)  # 初始化随机数生成器的内部状态;
getstate(), setstate(), jumpahead(), getrandbits(k)

# 整数函数:
randrange(start, stop[, step]) # 返回一个从range(start, stop, step)随机选择的元素, 等价于choice(range(start, stop, step),但不创建range对象;
randint(a, b) # 返回一个位于区间[a, b]的一个随机整数;
choice(seq) # 返回非空序列中的一个随机元素,如果序列为空,抛出IndexError错误。
shuffle(x[, ramdom])  # 就地交换序列x(可以用于洗牌)注意,即使对于较小长度的序列x,其组合情况极多,可能会大于随机数生成器的范围。
sample(population, k) # 返回从population中选择的k无重复元素列表,用于模拟不放回随机采样。(或许可以用来发牌)

# 实数函数:
random() # 返回[0.0, 1.0)内的随机浮点数
uniform(a, b) # 均匀分布 相当于a+(b-a)*random()
triangular(low, high, mode) # 下限, 上限, 众数。
betavariate(alpha, beta) # beta分布
expovariate(lambd) # 指数分布
gammavariate(alpha, beta) # Gamma分布
gauss(mu, sigma) # 高斯分布,比normalvariate()更快
lognormvariate(mu, sigma) # 对数正态分布
normalvariate(mu, sigma) # 正态分布
vonmisesvariate(mu, kappa) # 
paretovariate(alpha) # Pareto分布
weibullvariate(alpha, beta) # Weibull分布

示例:

示例
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 134,868评论 18 139
  • 方法1 (数据类型)(最小值+Math.random()*(最大值-最小值+1)) 例: (int)(1+Math...
    GB_speak阅读 41,128评论 2 6
  • Python random包可以用来生成随机数。随机数不仅可以用于数学用途,还经常被嵌入到算法中,用以提高算法效率...
    达闻西阅读 5,699评论 1 5
  • Python 中的 random 模块用于生成各种分布的随机数。random 模块可以生成随机浮点数、整数、字符串...
    孙庚辛阅读 1,741评论 1 0
  • 编程语言SwiftObjective-CC++/CJavaScript 操作系统Mac OSXiOSwatchOS...
    小朴同学阅读 580评论 0 1