python产生随机数random.random_Python内置random模块生成随机数的方法-程序员宅基地

技术标签: python产生随机数random.random  

本文我们详细地介绍下两个模块关于生成随机序列的其他使用方法。

随机数参与的应用场景大家一定不会陌生,比如密码加盐时会在原密码上关联一串随机数,蒙特卡洛算法会通过随机数采样等等。Python内置的random模块提供了生成随机数的方法,使用这些方法时需要导入random模块。

import random

下面介绍下Python内置的random模块的几种生成随机数的方法。

1、random.random()随机生成 0 到 1 之间的浮点数[0.0, 1.0)。注意的是返回的随机数可能会是 0 但不可能为 1,即左闭右开的区间。

print("random: ", random.random())

#random: 0.5714025946899135

2、random.randint(a , b)随机生成 a 与 b 之间的整数[a, b],a<=n<=b,随机整数不包含 b 时[a, b)可以使用 random.randrange() 方法。

print("randint: ", random.randint(6,8))

#randint: 8

3、random.randrange(start,stop,step)按步长step随机在上下限范围内取一个随机数,start<=n

print("randrange: ",random.randrange(20,100,5))

#randrange: 85

4、random.uniform(a, b)随机生成 a 与 b 之间的浮点数[a, b],a<=n<=b。

print("uniform: ",random.uniform(5,10))

#uniform: 5.119790163375776

5、random.choice()从列表中随机取出一个元素,比如列表、元祖、字符串等。注意的是,该方法需要参数非空,否则会抛出 IndexError 的错误。

print("choice: ",random.choice("www.yuanxiao.net"))

#choice: y

6、random.shuffle(items) 把列表 items 中的元素随机打乱。注意的是,如果不想修改原来的列表,可以使用 copy 模块先拷贝一份原来的列表。

num = [1, 2, 3, 4, 5]

random.shuffle(num)

print("shuffle: ",num)

#shuffle: [1, 3, 5, 4, 2]

7、random.sample(items, n)从列表 items 中随机取出 n 个元素。

num = [1, 2, 3, 4, 5]

print("sample: ",random.sample(num, 3))

#sample: [4, 1, 5]

Python 的random模块产生的随机数其实是伪随机数,依赖于特殊算法和指定不确定因素(种子seed)来实现。如randint方法生成一定范围内的随机数,会先指定一个特定的seed,将seed通过特定的随机数产生算法,得到一定范围内随机分布的随机数。因此对于同一个seed值的输入产生的随机数会相同,省略参数则意味着使用当前系统时间秒数作为种子值,达到每次运行产生的随机数都不一样。

random.seed(2)

print("random: ", random.random())

#random: 0.9560342718892494

random.seed(3)

print("random: ", random.random())

#random: 0.23796462709189137

random.seed(3)#同一个种子值,产生的随机数相同

print("random: ", random.random())

#random: 0.23796462709189137

numpy库也提供了random模块,用于生成多维度数组形式的随机数。使用时需要导入numpy库。

import numpy as np

下面介绍下numpy库的random模块的几种生成随机数的方法。

1、numpy.random.rand(d0,d1,…,dn)

rand函数根据给定维度生成[0,1]之间的数据,包含0,不包含1

dn表格每个维度

返回值为指定维度的array

print("np.random.rand:\n {}".format(np.random.rand(4,2)))

# shape: 4*3

"""

np.random.rand:

[[0.5488135 0.71518937]

[0.60276338 0.54488318]

[0.4236548 0.64589411]

[0.43758721 0.891773 ]]

"""

print("np.random.rand:\n {}".format(np.random.rand(4,3,2)))

# shape: 4*3*2

"""

np.random.rand:

[[[0.96366276 0.38344152]

[0.79172504 0.52889492]

[0.56804456 0.92559664]]

[[0.07103606 0.0871293 ]

[0.0202184 0.83261985]

[0.77815675 0.87001215]]

[[0.97861834 0.79915856]

[0.46147936 0.78052918]

[0.11827443 0.63992102]]

[[0.14335329 0.94466892]

[0.52184832 0.41466194]

[0.26455561 0.77423369]]]

"""

2、numpy.random.randn(d0,d1,…,dn)

randn函数返回一个或一组样本,具有标准正态分布。

dn表格每个维度

返回值为指定维度的array

标准正态分布—-standard normal distribution

标准正态分布又称为u分布,是以0为均值、以1为标准差的正态分布,记为N(0,1)。

print("np.random.randn:\n {}".format(np.random.randn()))

# 当没有参数时,返回单个数据

"""

np.random.randn:

2.2697546239876076

"""

print("np.random.randn:\n {}".format(np.random.randn(2,4)))

"""

np.random.randn:

[[-1.45436567 0.04575852 -0.18718385 1.53277921]

[ 1.46935877 0.15494743 0.37816252 -0.88778575]]

"""

print("np.random.randn:\n {}".format(np.random.randn(4,3,2)))

"""

np.random.randn:

[[[-1.98079647 -0.34791215]

[ 0.15634897 1.23029068]

[ 1.20237985 -0.38732682]]

[[-0.30230275 -1.04855297]

[-1.42001794 -1.70627019]

[ 1.9507754 -0.50965218]]

[[-0.4380743 -1.25279536]

[ 0.77749036 -1.61389785]

[-0.21274028 -0.89546656]]

[[ 0.3869025 -0.51080514]

[-1.18063218 -0.02818223]

[ 0.42833187 0.06651722]]]

"""

3、numpy.random.randint(low, high=None, size=None, dtype='l')

返回随机整数,范围区间为[low,high),包含low,不包含high

参数:low为最小值,high为最大值,size为数组维度大小,dtype为数据类型,默认的数据类型是np.int

high没有填写时,默认生成随机数的范围是[0,low]

print("np.random.randint:\n {}".format(np.random.randint(1,size=5)))

# 返回[0,1)之间的整数,所以只有0

"""

np.random.randint:

[0 0 0 0 0]

"""

print("np.random.randint:\n {}".format(np.random.randint(1,5)))# 返回1个[1,5)时间的随机整数

"""

np.random.randint:

2

"""

print("np.random.randint:\n {}".format(np.random.randint(-5,5,size=(2,2))))

"""

np.random.randint:

[[-5 -3]

[ 2 -3]]

"""

4、numpy.random.seed()

np.random.seed()的作用:使得随机数据可预测。

当我们设置相同的seed,每次生成的随机数相同。如果不设置seed,则每次会生成不同的随机数

总结

以上所述是小编给大家介绍的Python内置random模块生成随机数的方法,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对我们网站的支持!

如果你觉得本文对你有帮助,欢迎转载,烦请注明出处,谢谢!

本文标题: Python内置random模块生成随机数的方法

本文地址: http://www.cppcns.com/jiaoben/python/261243.html

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/weixin_39850981/article/details/110279470

智能推荐

html的li浮动之后往下移动,多个li浮动后居中显示问题-程序员宅基地

文章浏览阅读671次。在实际工作当中经常会遇到像上面这样的布局,就是不确定li的个数,但是想让它在父元素内水平居中显示或是相对父元素两端对齐。先看基础的/p>这样只能靠左显示。解决方法目前搜集了三种:第一种:利用css3选择器:nth-child(n)设定最后一列li的margin-right值为0。这也是我第一反应想到的方法,添加/p>第二种:设置ul的margin-left为负值。这是从猫爷的博客看到的..._li里面字体向下移动

07.显示系统:第003课_最简单的Surface测试程序:第01节_最简单的Surface测试程序_surfaceflinger测式程序-程序员宅基地

文章浏览阅读755次,点赞7次,收藏5次。在前面的章节中,简单的分析了android显示系统的框架,我们知道一个应用程序之中,存在一个或者多个buffer用来存放界面的数据,单应用程序构造好这些buffer之后,他会把这些buffer发送给surfaceFlinger,由surfaceFlinger决定在合适的时候把buffer中的数据拷贝到framebuffer,这样才能在屏幕上显示界面。应用程序的buffer需要向surfaceFli......_surfaceflinger测式程序

基于Spring Boot的外卖点餐系统设计与实现

随着科学技术的飞速发展,各行各业都在努力与现代先进技术接轨,通过科技手段提高自身的优势社会的发展和科学技术的进步,互联网技术越来越受欢迎。网络计算机的生活方式逐渐受到广大人民群众的喜爱,也逐渐进入了每个用户的使用。互联网具有便利性,速度快,效率高,成本低等优点。因此,构建符合自己要求的操作系统是非常有意义的。本文从用户的功能要求出发,建立了外卖点餐系统 ,系统中的功能模块主要是实现管理员;

Rust 字符串基本使用教程及代码演示

是一个可增长的、拥有所有权的、UTF-8编码的字符串类型。它在堆上分配内存,因此可以动态地增加或减少其长度。在Rust中,字符串不能通过索引直接访问单个字符,因为它们是UTF-8编码的。在Rust中,字符串是编程中非常基础且重要的部分。是一个字符串切片,它是一个指向某个字符串数据的引用。它不拥有数据,因此是不可变的。本教程将带你了解Rust中字符串的基本概念和操作。可以使用切片操作来获取字符串的一部分。字符串可以很容易地被放入集合中,如。宏可以创建格式化的字符串。

Vue3+Nuxt3 从0到1搭建官网项目(SEO搜索、中英文切换、图片懒加载)

想开发一个官网,并且支持SEO搜索,当然离不开我们的nuxt,nuxt2我们刚刚可以熟练运用,现在有出现了nuxt3,那通过本篇文章让我们一起了解一下。

学习 Rust 的第十四天:如何使用HashMap

学习 Rust 的第十四天:如何使用HashMap

随便推点

MinGW-CMake-OpenCV-Clion 配置_-- the c compiler identification is gnu 8.1.0 -- t-程序员宅基地

文章浏览阅读2.9k次。参考CLion 中 的 MinGW 配置(及中文坑解决) - 知乎Windows-MinGW-CMake-OpenCV 配置 - 知乎前言笔者前面发布了vs2019下opencv的配置教程,但是vs的项目有点臃肿,相对而言笔者更喜欢用clion进行开发.于是有了这片探索博文.安装CMake与MinGW64第一部分都是照搬的知乎一位作者的答案,因为写的很好没有必要改.首先安装CMake,下图演示了大概安装流程:1- 去 CMake 官网(https://cmake.org._-- the c compiler identification is gnu 8.1.0 -- the cxx compiler identifica

Python闭包:深入解析与使用场景

在Python中,一个函数内部定义的另一个函数(称为内部函数或嵌套函数),如果引用了外部函数的变量,那么这个内部函数就形成了一个闭包。在Python编程世界中,闭包(Closure)是一个强大而灵活的概念,它允许函数携带其定义时的环境信息,并在后续调用时访问这些信息。:在异步编程、事件驱动编程等场景中,回调函数是常见的模式。外部函数最后返回内部函数,这样当外部函数执行完毕后,内部函数(即闭包)仍然可以访问外部函数的变量。闭包的关键在于,它不仅仅是一个函数对象,它还包含了函数被定义时的环境信息,即词法环境。

JS 正则表达式百分比_js正则表达式百分数-程序员宅基地

文章浏览阅读712次。第一个数字后,匹配至少2个数字。可以为0-9. 即最小3位 最小100%开头第一个数字需要为1-9,即不能为0。匹配0个或1个 . ,可以没有小数点。以点之后一个或者两个数字结尾。_js正则表达式百分数

iOS上的UI是如何渲染出来的? 深入浅出UIKit渲染

我们在代码中写的View、Image等组件,最终是如何一步步渲染到屏幕上的呢?触摸、动画等是如何实现的?我们可以利用这些知识做哪些优化呢?本文先从屏幕物理层原理出发,一步步介绍渲染流程,然后介绍iOS的UIKit框架设计,最后介绍如何利用这些知识做优化先看第一步,屏幕是如何非常细腻的展示图片的。

分享我的电子藏书:C++系列(共32本)_accelerated c++ pdf-程序员宅基地

文章浏览阅读1.1k次。这些书籍是网上经常讨论的书籍,在此做一个总结和归类,免去大家找资料的奔波之苦。因书籍是自己学习所用,上传的所有书我收藏时都浏览过,保证书籍质量。 基础:××××××××××《C++编程思想》Thinking in C++Bruce Eckel著,刘宗田等译卷1 2E 卷2 1E机械工业出版社中文版,PDF格式卷1 506页 卷2 534页内附_accelerated c++ pdf

Vue2-TodoList案例(初级 后面会进行完善)_vue2 todolist网页-程序员宅基地

文章浏览阅读240次。Vue2-TodoList案例_vue2 todolist网页