python包和模块导入方式,random函数的用法

binary:二进制

模块(module):

                一般而言,在python中,XXX.py文件就可以认定为一个模块

                一个模块一般是用来存放和管理一类功能的一个文件

包(package):

                文件夹,用来管理和存放模块,将相关功能的模块放在一个文件夹中

                注意:普通文件夹可以当作包,但真正的包,存放在一个_init_.py文件

                             一旦导入了这个包,会自动执行该包中的初始化文件

                模块的导入:

                        import model_name

                        import model_name as alias    #将导入的模块重新起一个别名

                        import package.model_name as alias

                        from package import model_name        #推荐使用

                        from package import* 

random函数的用法

1. random.random(): 返回随机生成的一个浮点数,范围在[0,1)之间

2. random.uniform(a, b): 返回随机生成的一个浮点数,范围在[a, b)之间

3. random.randint(a,b):生成指定范围内的整数 

4. random.randrange([start],stop[,step]):用于从指定范围内按指定基数递增的集合中获取一个随机数。 

5. random.choice():从指定的序列中获取一个随机元素

6. random.shuffle(x[,random]):用于将一个列表中的元素打乱,随机排序

7. random.sample(sequence,k):用于从指定序列中随机获取指定长度的片段,sample()函数不会修改原有序列。

8. np.random.rand(d0, d1, …, dn): 返回一个或一组浮点数,范围在[0, 1)之间

9. np.random.normal(loc=a, scale=b, size=()): 返回满足条件为均值=a, 标准差=b的正态分布(高斯分布)的概率密度随机数

10 np.random.randn(d0, d1, … dn): 返回标准正态分布(均值=0,标准差=1)的概率密度随机数

11. np.random.standard_normal(size=()): 返回标准正态分布(均值=0,标准差=1)的概率密度随机数

12. np.random.randint(a, b, size=(), dtype=int): 返回在范围在[a, b)中的随机整数(含有重复值)

13. random.seed(): 设定随机种子

首先我们需要导入random模块 
1. random.random(): 返回随机生成的一个浮点数,范围在[0,1)之间
import random
print(random.random())

2. random.uniform(a, b): 返回随机生成的一个浮点数,范围在[a, b)之间
import random
print(random.uniform(1,5))

3. random.randint(a,b):生成指定范围内的整数 
import random
print(random.randint(1,10))

4. random.randrange([start],stop[,step]):用于从指定范围内按指定基数递增的集合中获取一个随机数。 
例如random.randrange(10,100,2),结果相当于从 [10,12,14,16...96,98] 序列中获取一个随机数。random.randrange (10,100,2) 的结果上与 random.choice(range(10,100,2)) 等效。

import random
print(random.randrange(10,22,3))


5. random.choice():从指定的序列中获取一个随机元素
random.choice()从序列中获取一个随机元素,其原型为random.choice(sequence),参数sequence表示一个有序类型。这里说明一下,sequence在Python中不是一种特定的类型,而是泛指序列数据结构。列表,元组,字符串都属于sequence。

import random
print(random.choice('学习python'))   # 从字符串中随机取一个字符
print(random.choice(['good', 'hello', 'is', 'hi', 'boy']))   # 从list列表中随机取
print(random.choice(('str', 'tuple', 'list')))   # 从tuple元组中随机取


6. random.shuffle(x[,random]):用于将一个列表中的元素打乱,随机排序
import random
p=['hehe','xixi','heihei','haha','zhizhi','lala','momo..da']
random.shuffle(p)
print(p)
x = [1, 2, 3, 4, 5]
random.shuffle(x)
print(x)

7. random.sample(sequence,k):用于从指定序列中随机获取指定长度的片段,sample()函数不会修改原有序列。
import random
list1=[1,2,3,4,5,6,7,8,9,10]
slice=random.sample(list1,5)
print(slice)
#[8, 3, 5, 9, 10]
print(list1)
#[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
x = random.sample(range(0, 10), 5)
print(x, type(x))
#[9, 2, 7, 8, 6] <class 'list'>
Words = "AppleKMedoide"
print(random.sample(Words, 3))
#['p', 'M', 'A']
print(random.sample(Words, 3))
#['d', 'i', 'l']


下面的函数需要调用numpy库 

8. np.random.rand(d0, d1, …, dn): 返回一个或一组浮点数,范围在[0, 1)之间
import random
import numpy as np
x = np.random.rand()
y = np.random.rand(4)
print(x,type(x))
#0.09842641570445387 <class 'float'>
print(y,type(y))
#[0.27298291 0.12350038 0.63977128 0.90791234] <class 'numpy.ndarray'>

9. np.random.normal(loc=a, scale=b, size=()): 返回满足条件为均值=a, 标准差=b的正态分布(高斯分布)的概率密度随机数
np.random.normal(loc=a, scale=b, size=()) - 返回满足条件为均值=a, 标准差=b的正态分布(高斯分布)的概率密度随机数,size默认为None(返回1个随机数),也可以为int或数组

import random
import numpy as np
x = np.random.normal(10,0.2,2)
print(x,type(x))
#[9.78391585 9.83981096] <class 'numpy.ndarray'>
y = np.random.normal(10,0.2)
print(y,type(y))
#9.871187751372984 <class 'float'>
z = np.random.normal(0,0.1,(2,3))
print(z,type(z))
#[[-0.07114831 -0.10258022 -0.12686863]
# [-0.08988384 -0.00647591  0.06990716]] <class 'numpy.ndarray'>
z = np.random.normal(0,0.1,[2,2])
print(z,type(z))
#[[ 0.07178268 -0.00226728]
# [ 0.06585013 -0.04385656]] <class 'numpy.ndarray'>

10 np.random.randn(d0, d1, … dn): 返回标准正态分布(均值=0,标准差=1)的概率密度随机数
np.random.randn(d0, d1, ... dn): 返回标准正态分布(均值=0,标准差=1)的概率密度随机数,

import random
import numpy as np
x = np.random.randn()
y = np.random.randn(3)
z = np.random.randn(3, 3)
print(x, type(x))
print(y, type(y))
print(z, type(z))


11. np.random.standard_normal(size=()): 返回标准正态分布(均值=0,标准差=1)的概率密度随机数
np.random.standard_normal(): 返回标准正态分布(均值=0,标准差=1)的概率密度随机数, size默认为None(返回1个随机数),也可以为int或数组

import random
import numpy as np
x = np.random.standard_normal()
y = np.random.standard_normal(size=(3,3))
print(x, type(x))
print(y, type(y))


np.random.rand()与np.random.standard_normal()的方法结果相似,都是返回合符标准正态分布的随机浮点数或数组。

12. np.random.randint(a, b, size=(), dtype=int): 返回在范围在[a, b)中的随机整数(含有重复值)
np.random.randint(a, b, sizie=(), dytpe=int) - size默认为None(返回1个随机数),也可以为int或数组

import random
import numpy as np
# 从序列[0, 10)之间返回shape=(5,5)的10个随机整数(包含重复值)
x = np.random.randint(0, 10, size=(5, 5))
# 从序列[15, 20)之间返回1个随机整数(size默认为None, 则返回1个随机整数)
y = np.random.randint(15, 20)
print(x, type(x))
print(y, type(y))


13. random.seed(): 设定随机种子
在设定随机种子为10之后,random.random()的随机数将被直接设定为:0.5714025946899135

import random
random.seed(10)
x = random.random()
print(x,type(x))
random.seed(10)
y = random.random()
print(y,type(y))
z = random.random()
print(z,type(z))


random随机数是这样生成的:我们将这套复杂的算法(是叫随机数生成器吧)看成一个黑盒,把我们准备好的种子扔进去,它会返给你两个东西,一个是你想要的随机数,另一个是保证能生成下一个随机数的新的种子,把新的种子放进黑盒,又得到一个新的随机数和一个新的种子,从此在生成随机数的路上越走越远。

我们利用如下代码进行测试:

import numpy as np
if __name__ == '__main__':
    i = 0
    while i < 6:
        if i < 3:
            np.random.seed(0)
            print(np.random.randn(1, 5))
        else:
            print(np.random.randn(1, 5))
        i += 1
    i = 0
    while i < 2:
        print(np.random.randn(1, 5))
        i += 1
    print(np.random.randn(2, 5))
    np.random.seed(0)
    print("###################################")
    i = 0
    while i < 8:
        print(np.random.randn(1,5))
        i += 1
 

通过该实验我们可以得到以下结论:

两次利用随机数种子后,即便是跳出循环后,生成随机数的结果依然是相同的。第一次跳出while循环后,进入第二个while循环,得到的两个随机数组确实和加了随机数种子不一样。但是,后面的加了随机数种子的,八次循环中的结果和前面的结果是一样的。说明,随机数种子对后面的结果一直有影响。同时,加了随机数种子以后,后面的随机数组都是按一定的顺序生成的。
在同样的随机种子后第六次的随机数生成结果,两行五列的数组和两个一行五列的数组结果相同。说明,在生成多行随机数组时,是由单行随机数组组合而成的。
利用随机数种子,每次生成的随机数相同,就是使后面的随机数按一定的顺序生成。当随机数种子参数为0和1时,生成的随机数和我上面高亮的结果相同。说明该参数指定了一个随机数生成的起始位置。每个参数对应一个位置。并且在该参数确定后,其后面的随机数的生成顺序也就确定了。
随机数种子的参数怎么选择?我认为随意,这个参数只是确定一下随机数的起始位置。
 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/778937.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

硬件10、从网站获取封装

百度搜索IC封装网或者网址https://www.iclib.com/ 搜索想要的器件&#xff0c;直接下载他的原理图库和封装库

1.Mysql基础入门—MySQL-mysql 8.0.11安装教程

1.Mysql基础入门—MySQL-mysql 8.0.11安装教程 摘要个人简介下载Mysql安装Mysql配置环境变量 摘要 MySQL 8.0.11的安装过程涉及几个关键步骤&#xff0c;首先访问MySQL官方网站下载页面&#xff0c;选择操作系统相对应的MySQL版本进行下载。对于Windows用户&#xff0c;启动下…

SpringCloudConfig 使用git搭建配置中心

一 SpringCloudConfig 配置搭建步骤 1.引入 依赖pom文件 引入 spring-cloud-config-server 是因为已经配置了注册中心 <dependencies><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-config-server</…

计算机网络(03)

计算机网络&#xff08;02&#xff09; 三层交换机 普通交换机叫做 二层交换机三层交换机 二层交换 三层路由 .VLAN 互通 虚拟接口 在三层交换机上配置的VLAN接口为虚拟接口使用***Vlanif ( VLAN虚拟接口 )***实现VLAN间的路由VLAN的接口引入使得应用更加灵活 三层交换…

浅谈 kafka

引言 同事在公司内部分享了关于 kafka 技术一些相关的内容&#xff0c;所以有了这篇文章&#xff1b;部分图片选自网络摘抄&#xff1b; 1 Kafka概述 1.1 定义 Kafka传统定义&#xff1a;kafka是一个分布式的基于发布/订阅模式的消息队列。 Kafka最新定义&#xff1a;kafka…

东莞交投集团供应链服务平台上线啦

2021年&#xff0c;东莞市交通投资集团有限公司&#xff08;以下简称“东莞交投集团”&#xff09;开展物资采购供应管理的改进研究。2022年&#xff0c;为充分挖掘数据价值&#xff0c;赋能采购管理&#xff0c;探索物资全生命周期管理&#xff0c;集团以降本增效为目标&#…

IT廉连看——SpringBoot——SpringBoot简介

IT廉连看——SpringBoot——SpringBoot简介 1、Spring优缺点 spring优点 Spring是Java企业版&#xff08;Java Enterprise Edition&#xff0c;JEE&#xff0c;也称J2EE&#xff09;的轻量级代表。无需开发重量级的EnterpriseJavaBean&#xff08;EJB&#xff09;&#xff0…

iOS UIFont-实现三方字体的下载和使用

UIFont 系列传送门 第一弹加载本地字体:iOS UIFont-新增第三方字体 第二弹加载线上字体:iOS UIFont-实现三方字体的下载和使用 前言 在上一章我们完成啦如何加载使用本地的字体。如果我们有很多的字体可供用户选择,我们当然可以全部使用本地字体加载方式,可是这样就增加了…

在项目中缓存如何优化?SpringCache接口返回值的缓存【CachePut、CacheEvict、Cacheable】

SpringCache 介绍&#xff08;不同的缓存技术有不同的CacheManager&#xff09;注解入门程序环境准备数据库准备环境准备注入CacheManager引导类上加EnableCaching CachePut注解(缓存方法返回值)1). 在save方法上加注解CachePut2). 测试 CacheEvict注解&#xff08;清理指定缓存…

开源AI引擎|信息抽取与文本分类项目案例:提升12345政务投诉处理效率

一、实际案例介绍 采集员案件上报流程是城市管理和问题解决的关键环节&#xff0c;涉及对案件类别的选择、案件来源的记录、详细案件描述的填写以及现场图片的上传。这一流程要求采集员准确、详细地提供案件信息&#xff0c;以便系统能够自动解析关键数据并填写相关内容&#…

ip地址改变导致nacos无法登录的解决方法

ip地址改变导致nacos无法登录的解决方法 在做黑马的springcloud课程里的黑马商城微服务项目时&#xff0c;发现使用nacos的默认账号密码&#xff08;nacos&#xff0c;nacos&#xff09;无法登录&#xff0c;项目里也没报错信息&#xff0c;虽然猜测和ip地址改变有关&#xff0…

算法---动态规划练习-6(地下城游戏)

地下城游戏 1. 题目解析2. 讲解算法原理3. 编写代码 1. 题目解析 题目地址&#xff1a;点这里 2. 讲解算法原理 首先&#xff0c;定义一个二维数组 dp&#xff0c;其中 dp[i][j] 表示从位置 (i, j) 开始到达终点时的最低健康点数。 初始化数组 dp 的边界条件&#xff1a; 对…

机器学习作业二之KNN算法

KNN&#xff08;K- Nearest Neighbor&#xff09;法即K最邻近法&#xff0c;最初由 Cover和Hart于1968年提出&#xff0c;是一个理论上比较成熟的方法&#xff0c;也是最简单的机器学习算法之一。该方法的思路非常简单直观&#xff1a;如果一个样本在特征空间中的K个最相似&…

数据库内数据已清除,刷新后又出现

背景 源于客户需求要写一个告警接口&#xff0c;对第三方接口的返回值进行判断&#xff0c;达到一定数值后要推送告警&#xff0c;数值正常后要推送告警恢复。经过对数据的分析以及接口逻辑处理&#xff0c;采用数据库查询写入等方式。&#xff08;对此告警接口感兴趣的朋友请…

学习java第二十六天

Spring是一个开源框架&#xff0c;Spring是一个轻量级的Java 开发框架。它是为了解决企业应用开发的复杂性而创建的。框架的主要优势之一就是其分层架构&#xff0c;分层架构允许使用者选择使用哪一个组件&#xff0c;同时为 J2EE 应用程序开发提供集成的框架。Spring使用基本的…

数字化运维实战手册:构建高效运维体系的方法与实践

一本书掌握数字化运维方法&#xff0c;构建数字化运维体系 数字化转型已经成为大势所趋&#xff0c;各行各业正朝着数字化方向转型&#xff0c;利用数字化转型方法论和前沿科学技术实现降本、提质、增效&#xff0c;从而提升竞争力。 数字化转型是一项长期工作&#xff0c;包含…

How to use jupyter nbconvert

How to use jupyter nbconvert 最近在使用jupyter notebook的时候&#xff0c;发现notebook文件在问题探索方面非常方便&#xff0c;但是交付的话&#xff0c;还是期望能将其转换为python源文件。要实现notebook源文件(.ipynb)与python源文件(.py)之间的相互转换&#xff0c;可…

Mybatis中QueryWrapper的复杂查询SQL

最近在使用QueryWrapper编写查询语句时发现复杂的SQL不会写。在网上找了半天&#xff0c;终于得到了点启示。在此做个记录以备忘。 我要实现的SQL是这样的&#xff1a; -- 实现这个复杂查询 -- 查询设备表 select * from oa_device where ((dev_code BSD1003 and dev_status…

[flume$1]记录一个启动flume配置的错误

先总结&#xff1a;Flume配置文件后面&#xff0c;不能跟注释 报错代码&#xff1a; [ERROR - org.apache.flume.SinkRunner$PollingRunner.run(SinkRunner.java:158)] Unable to deliver event. Exception follows. org.apache.flume.EventDeliveryException: Failed to open…

Termius for Mac/Win:多协议远程管理利器,你的工作效率提升神器

在数字化飞速发展的今天&#xff0c;远程管理已成为企业运营和个人工作不可或缺的一部分。而Termius&#xff0c;作为一款多协议远程管理软件&#xff0c;正以其卓越的性能和便捷的操作&#xff0c;成为广大用户的心头好。 Termius支持多种协议&#xff0c;无论是SSH、RDP还是…