(数据科学学习手札03)Python与R在随机数生成上的异同

随机数的使用是很多算法的关键步骤,例如蒙特卡洛法、遗传算法中的轮盘赌法的过程,因此对于任意一种语言,掌握其各类型随机数生成的方法至关重要,Python与R在随机数底层生成上都依靠梅森旋转(twister)来生成高质量的随机数,但在语法上存在着很多异同点。

Python

numpy中的random模块

from numpy import random
?random
Type:        module
String form: <module 'numpy.random' from 'D:\\anaconda\\lib\\site-packages\\numpy\\random\\__init__.py'>
File:        d:\anaconda\lib\site-packages\numpy\random\__init__.py
Docstring:  
========================
Random Number Generation
========================
==================== =========================================================
Utility functions
==============================================================================
random_sample        Uniformly distributed floats over ``[0, 1)``.
random               Alias for `random_sample`.
bytes                Uniformly distributed random bytes.
random_integers      Uniformly distributed integers in a given range.
permutation          Randomly permute a sequence / generate a random sequence.
shuffle              Randomly permute a sequence in place.
seed                 Seed the random number generator.
choice               Random sample from 1-D array.
==================== =========================================================
==================== =========================================================
Compatibility functions
==============================================================================
rand                 Uniformly distributed values.
randn                Normally distributed values.
ranf                 Uniformly distributed floating point numbers.
randint              Uniformly distributed integers in a given range.
==================== =========================================================
==================== =========================================================
Univariate distributions
==============================================================================
beta                 Beta distribution over ``[0, 1]``.
binomial             Binomial distribution.
chisquare            :math:`\chi^2` distribution.
exponential          Exponential distribution.
f                    F (Fisher-Snedecor) distribution.
gamma                Gamma distribution.
geometric            Geometric distribution.
gumbel               Gumbel distribution.
hypergeometric       Hypergeometric distribution.
laplace              Laplace distribution.
logistic             Logistic distribution.
lognormal            Log-normal distribution.
logseries            Logarithmic series distribution.
negative_binomial    Negative binomial distribution.
noncentral_chisquare Non-central chi-square distribution.
noncentral_f         Non-central F distribution.
normal               Normal / Gaussian distribution.
pareto               Pareto distribution.
poisson              Poisson distribution.
power                Power distribution.
rayleigh             Rayleigh distribution.
triangular           Triangular distribution.
uniform              Uniform distribution.
vonmises             Von Mises circular distribution.
wald                 Wald (inverse Gaussian) distribution.
weibull              Weibull distribution.
zipf                 Zipf's distribution over ranked data.
==================== =========================================================
==================== =========================================================
Multivariate distributions
==============================================================================
dirichlet            Multivariate generalization of Beta distribution.
multinomial          Multivariate generalization of the binomial distribution.
multivariate_normal  Multivariate generalization of the normal distribution.
==================== =========================================================
==================== =========================================================
Standard distributions
==============================================================================
standard_cauchy      Standard Cauchy-Lorentz distribution.
standard_exponential Standard exponential distribution.
standard_gamma       Standard Gamma distribution.
standard_normal      Standard normal distribution.
standard_t           Standard Student's t-distribution.
==================== =========================================================
==================== =========================================================
Internal functions
==============================================================================
get_state            Get tuple representing internal state of generator.
set_state            Set state of generator.
==================== =========================================================

上述random的模块说明文档详细说明了random中内置的各种随机数生成方法,下面针对其中一些常见的举例说明:

1.random.random_sample()与random.random()

生成[0,1]之间的服从均匀分布的浮点随机数

from numpy import random
for i in range(10):print(random.random_sample())
0.5131167122678871
0.3182844248720986
0.5391999374256481
0.2212549424277599
0.80648135792427
0.34225462561468434
0.5388888490671446
0.00587378555105833
0.6731524781805254
0.21002426217873815

2.random.random_integers()

生成指定范围内的可重复整数

random.random_integers(1,10,10)
Out[44]: array([ 9, 10,  6,  4, 10, 10,  5,  3,  1,  6])

3.random.permutation()

生成指定范围内所有整数的一次随机排列

for i in range(5):token = random.permutation(5)print(token)print(set(token))
[0 2 1 3 4]
{0, 1, 2, 3, 4}
[0 3 4 2 1]
{0, 1, 2, 3, 4}
[2 3 1 4 0]
{0, 1, 2, 3, 4}
[4 3 0 1 2]
{0, 1, 2, 3, 4}
[1 2 4 0 3]
{0, 1, 2, 3, 4}

4.random.shuffle()

将指定的列表随机打乱顺序

list = [i for i in range(10)]
random.shuffle(list)
print(list)
[6, 8, 2, 4, 5, 3, 0, 7, 1, 9]

5.random.seed()

以括号中的整数为起点设置伪随机数种子,同样的随机数种子设置后生成的随机数相同

random.seed(42)
print(random.permutation(5))
random.seed(42)
print(random.permutation(5))
[1 4 2 0 3]
[1 4 2 0 3]

 6.random.choice()

从制定的序列中随机抽取多个元素(有放回或无放回,通过replace参数控制)

list = [i for i in range(10)]
random.choice(list,6,replace=False)#有放回
Out[8]: array([9, 6, 4, 2, 7, 8])
random.choice(list,6,replace=False)#无放回
Out[9]: array([1, 3, 9, 4, 0, 8])

7.random.rand()

生成0-1中服从均匀分布的多个随机数

random.rand(5)
Out[19]: array([0.86317047, 0.43070734, 0.85228662, 0.74797087, 0.76224563])

8.random.randn()

生成多个服从标准正态分布的随机数

random.randn(10)
Out[21]: 
array([-0.25617082, -0.85531159, -0.18286371,  1.25656827, -0.72270841,0.13949334,  0.92318096, -1.12549131, -0.46908035, -0.28388281])

9.random.randint()

等可能的生成指定范围内的多个随机整数

random.randint(1,10,5)
Out[29]: array([2, 9, 8, 8, 9])

 

R

作为专为统计而生的一种语言,R在随机数生成上自然是异常的丰富,这里仅举常用的一些随机数生成函数

1.rnorm()

生成服从正态分布的随机数,其中参数mean控制均值,sd控制标准差

> rnorm(5,mean=0,sd=1)
[1] -0.36167951 -0.50435239 -0.20245800  0.07877604  0.23662553

2.runif()

生成指定范围内的均匀分布随机数

> runif(5, min=0,max=10)
[1] 3.2774081 1.7341489 8.4128022 3.1511841 0.3385417

3.sample()

以不放回的方式生成指定范围内的随机整数序列

> sample(1:10,5,replace=T)#有放回
[1] 4 9 3 4 4
> sample(1:10,5,replace=F)#无放回
[1] 3 2 6 8 1

4.set.seed()

以括号内的整数值作为随机数发生算法的起点,因此通过控制伪随机数种子的参数,可以实现随机抽样的重现

而真正的随机算法里是默认以系统时间等我们认为充分随机的数字作为起点

> set.seed(42)
> sample(1:10,5,replace=F)
[1] 10  9  3  6  4
> set.seed(42)
> sample(1:10,5,replace=F)
[1] 10  9  3  6  4

 

转载于:https://www.cnblogs.com/feffery/p/8536955.html

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

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

相关文章

音视频编解码知识学习详解(分多部分进行详细分析)

1. 常用的基本知识 基本概念 编解码 编解码器&#xff08;codec&#xff09;指的是一个能够对一个信号或者一个数据流进行变换的设备或者程序。这里指的变换既包括将信号或者数据流进行编码&#xff08;通常是为了传输、存储或者加密&#xff09;或者提取得到一个编码流的操作…

二叉树非递归后序遍历算法

与正常的非递归中序遍历算法不同于两点&#xff1a; 一 比正常的中序遍历算法多了对数据元素的标记。 在压数据元素入栈&#xff08;标记记为0&#xff0c;用来表示访问了其左子树&#xff09;时标记&#xff0c; 还有访问完左子树利用gettop&#xff08;&#xff09;获取双亲…

SQL*Plus命令

SQL*Plus命令 前言 一&#xff1a;SQL*Plus 与数据库的交互 二&#xff1a;设置SQL* Plus的运行环境 二 - 1 &#xff1a;SET命令概述 二 - 2 &#xff1a;使用SET命令设置运行环境 二 - 2 ____1&#xff1a;Pagesize 变量 1 SYSorcl> show pagesize2 pages…

redis-day1

1 Redis 概述 REmote DIctionary Server(Redis)是一个基于key-value键值对的持久化数据库存储系统。redis和大名鼎鼎的Memcached缓存服务软件很像&#xff0c;但是Redis支持的数据存储类型比Memcached更丰富&#xff0c;包括strings&#xff08;字符串&#xff09;、lists&…

C语言数码管是共阴共阳程序,C语言实现共阴极数码管操作

共阴极或者共阳极数码管&#xff0c;因为其需要电流大&#xff0c;而一般51输出电流低&#xff0c;需要锁存器。买的开发板使用的共阴极数码管。至于其构造&#xff0c;找个相关方面的书看看&#xff0c;这里主要是对做好的电路板进行编程。刚开始的时候&#xff0c;感觉在数码…

数据库主要特点

(1)实现数据共享。数据共享包含所有用户可同时存取数据库中的数据&#xff0c;也包括用户可以用各种方式通过接口使用数据库&#xff0c;并提供数据共享。 (2)减少数据的冗余度。同文件系统相比&#xff0c;由于数据库实现了数据共享&#xff0c;从而避免了用户各自建立应用文…

百度与华为全面战略合作 人工智能手机真的要来了

视频加载中...12月21日百度和华为在北京宣布达成全面战略合作。这次合作内容主要包括三点&#xff0c;首先是在语音、语义、视觉和VR上的自然交互&#xff0c;这是百度为华为手机AI赋能的基础层。第二是基于华为HiAI平台和百度PaddlePaddle深度学习框架&#xff0c;共建人工智能…

JavaScript数据类型

一、JavaScript数据类型主要分为原始类型和引用数据类型。 原始类型包括(不可拆分的东西)&#xff1a;Number、String、Boolean、Null、Undefined。引用数据类型包括&#xff1a;Object&#xff08;Array&#xff0c;Date&#xff0c;RegExp&#xff0c;Function&#xff09;ty…

funcode拼图游戏c语言程序,同求funcode平台下拼图游戏的C语言代码

做了好几天&#xff0c;写了好多回就是不对&#xff0c;彻底崩溃。。#include "CommonAPI.h"//#include "LessonX.h"#include#define BLOCK_COUNT 4int g_iGameState;intg_iBlockState[BLOCK_COUNT][BLOCK_COUNT];charg_szBlockName[BLOCK_COUNT*BLOCK_COU…

什么是透明传输

透明传输是指不管所传数据是什么样的比特组合&#xff0c;都应当能够在链路上传送。当所传数据中的比特组合恰巧与某一个控制信息完全一样时&#xff0c;就必须采取适当的措施&#xff0c;使收方不会将这样的数据误认为是某种控制信息。这样才能保证数据链路层的传输是透明的。…

Android 秒级编译FreeLine

项目地址&#xff1a;FreeLine FreeLine官网: FreeLine 1. 安装FreeLine插件 File->Settings->Plugins, 搜索输入FreeLine Plugin, 查找到后进行安装并重启Android Studio。 图1.png安装好之后&#xff0c;在工具栏就会出一个图标 图2.png2. 配置gradle 根目录build.gr…

JS实现大整数乘法(性能优化、正负整数)

本方法的思路为&#xff1a; 一&#xff1a;检查了输入的合法性&#xff08;非空&#xff0c;无非法字符&#xff09; 二&#xff1a;检查输入是否可以进行简单计算&#xff08;一个数为 0&#xff0c;1&#xff0c;1&#xff0c;-1&#xff09; 三&#xff1a;去掉输入最前面可…

c语言中- gt he,C语言中deta,fabs,lt;stdlib.hgt;,lt;stdio.hgt;分别是什么意思

fabs 编辑本段C语言数学函数:fabs 函数简介  原型&#xff1a;在TC中原型是extern float fabs(float x);&#xff0c;在VC6.0中原型是double fabs( double x );。   用法&#xff1a;#include   功能&#xff1a;求浮点数x的绝对值   说明&#xff1a;计算|x|, 当x不为…

物理层

目的&#xff1a; 物理层要尽可能地屏蔽掉物理设备和传输媒体&#xff0c;通信手段的不同&#xff0c;使数据链路层感觉不到这些差异&#xff0c;只考虑完成本层的协议和服务。 给其服务用户&#xff08;数据链路层&#xff09;在一条物理的传输媒体上传送和接收比特流…

C语言中的二级指针(双指针)

二级指针又叫双指针。C语言中不存在引用&#xff0c;所以当你试图改变一个指针的值的时候必须使用二级指针。C中可以使用引用类型来实现。 下面讲解C中的二级指针的使用方法。 例如我们使用指针来交换两个整型变量的值。 错误代码如下&#xff1a; 一级指针 [cpp] view pla…

测试环境服务器硬盘塞满问题排查

项目中出现的问题 某天下午测试环境服务器出现tab无法补全命令&#xff0c;给出的提示大概意思就是说,无可用空间无法创建临时文件&#xff0c;不过这次跟上次出现的问题比较像&#xff0c;上次服务器出现的问题&#xff0c;因此楼主判断可能是服务器数据盘被占满&#xff0c;果…

alpine_glibc 构建sun jdk 8的docker镜像

2019独角兽企业重金招聘Python工程师标准>>> 构建系统基础镜像 alpine glibc 的Dockerfile内容如下&#xff1a; alpine:3.6 MAINTAINER tongqiang<tongqiangyingmail.com># Here we install GNU libc (aka glibc) and set C.UTF-8 locale as default.ENV ALP…

单工 半双工 全双工

1 单工 单工就是指A只能发信号&#xff0c;而B只能接收信号&#xff0c;通信是单向的&#xff0c;就象灯塔之于航船——灯塔发出光信号而航船只能接收信号以确保自己行驶在正确的航线上。 2 半双工 半双工就是指A能发信号给B&#xff0c;B也能发信号给A&#xff0c;但这两…

c语言两个循环的ys,c语言编程:从键盘输入两个数,求它们的最小公倍数

满意答案flywisdom2019.06.20采纳率&#xff1a;44% 等级&#xff1a;9已帮助&#xff1a;1064人main(){int p,r,n,m,temp;printf("Please enter 2 numbers n,m:");scanf("%d,%d",&n,&m);//输入两个正整数.if(n{tempn;nm;mtemp;}pn*m;//P是原来…

每日微软面试题

每日微软面试题——day 1 <以下微软面试题全来自网络> <以下答案与分析纯属个人观点&#xff0c;不足之处&#xff0c;还望不吝指出^_^> 题&#xff1a;.编写反转字符串的程序&#xff0c;要求优化速度、优化空间。 分析&#xff1a;构建两个迭代器p 和 q &…