python随机生成一个整数n、求s=1+2+3_随机数字生成与数据杜撰—Python、Stata、R和Excel同步实现(附代码)…

在统计软件中3中特殊导入数据的方法包括:3. 随机数生成,也是一种高效自动生成数据的方法。今天我们使用几大统计工具分别进行演示。

在学习随机数生成数据框之前,我们先复习一下怎么在Python中导入自带数据和手工录入数据。

Excel生成随机数字的基础函数是RAND()。RAND():生成0-1的随机小数(8位小数)

RAND()*100:生成0-100的随机型小数(8位小数)

INT(RAND()*100):生成0-100的随机整数

RANDBETWEEN(0, 100):等价于上个命令,生成0-100的随机整数

RAND()*(b-a)+a:生成a到b之间的小数(8位小数)

Excel单元格中由函数生成的随机数字会随着每次新的操作而重新赋值。摁 F9 键也可以刷新数据。这个数据自动刷新被称为“自动重算”功能,可以在Excel的选项中改为“手动Manual”。如下图。

二、Stata中生成随机数字和数据

2.2 生成服从正太分布的随机数

刚才用到的函数是runiform(a, b),同理我们可以使用rnormal(a, b)来生成服从正太分布的随机数字。这里a是均值,b是方差,默认a=0,b=1。

. dis rnormal(0, 1)

.96945125

再次同理,如果想生成服从其它分布的随机数字,自使用相应的函数即可。具体可以参考Stata的帮助文件,如下图。

3.1 均匀分布随机数

> runif(5) ##随机生成5个0-1上服从均匀分布的数字

[1] 0.3721117 0.3533157 0.6245287 0.3629629 0.8267384

> runif(5, 2, 4) ##5个2-4的随机数字

[1] 3.577840 2.545053 3.356163 2.972466 3.524742

> x = runif(50) ##

> x

[1] 0.654313741 0.010750612 0.664279728 0.989241369

[5] 0.157953272 0.623989759 0.532645082 0.688334898

[9] 0.769586590 0.002820428 0.780777032 0.746295074

[13] 0.244242598 0.627596544 0.366842346 0.116852723

[17] 0.552604684 0.873311370 0.175121613 0.718984535

[21] 0.623732384 0.486349491 0.348247474 0.138669228

[25] 0.507153874 0.744990666 0.639488049 0.537489866

[29] 0.587281579 0.488738336 0.778982250 0.254766294

[33] 0.837063889 0.311226703 0.649325096 0.549533070

[37] 0.572817273 0.171129134 0.799913099 0.030952926

[41] 0.478483926 0.721633476 0.992871828 0.960445791

[45] 0.586032312 0.556384402 0.652898723 0.620106651

[49] 0.907198983 0.571987203

3.2 正太分布随机数语法:rnorm(n, mean=0, sd=1),n=个数;mean=均值,默认为0;sd是标准差,默认是1

原理和runif函数类似,我们在此不做演示。

至于其它类型的随机数字生成,则依靠相应的函数。原理和Stata类似。

四、在Python生成随机数字和数据

我们先说个重点,即Python中用NumPy和pandas生成一个随机的数据框。除了NumPy包的random函数,用来生成随机数另外一个重要的模块是random。

python随机生成一个整数n、求s=1+2+3_随机数字生成与数据杜撰—Python、Stata、R和Excel同步实现(附代码)...Life is 苦短, you need Python!

4.1 NumPy+pandas快速生成随机数据框

这里NumPy的随机数生成函数是主力。pandas只不过起一个转换数据格式的作用而已。

NumPy重要的随机数生成函数包括:np.random.rand(d0, d1, … , dn):用来生成0-1的随机数字(均匀分布);d0表示第一个维度的参数,d1表示第二个维度的参数,如此类推。

import numpy as np

import pandas as pd

##基于NumPy包生成随机数,再通过pandas转换为数据框

np.random.rand(5,2) ##生成5行2列的数组array

Out[16]:

array([[0.57167719, 0.06628198],

[0.73507217, 0.1703132 ],

[0.41942607, 0.89853925],

[0.58192626, 0.72808664],

[0.54990847, 0.29844433]])

pd.DataFrame(np.random.rand(5,2)) ##转换为5行2列的数据框

Out[17]:

0 1

0 0.365483 0.811755

1 0.211095 0.960215

2 0.537973 0.587952

3 0.607089 0.120266

4 0.269786 0.285295np.random.randn(d0, d1, … , dn):和上面的函数类似。区别在于生成的是服从标准正态分布的随机数。

##randn正太分布

pd.DataFrame(np.random.randn(5,2))

Out[19]:

0 1

0 -0.141764 0.453156

1 0.659923 0.246782

2 -0.898615 -1.436220

3 -1.606697 0.499991

4 -1.297734 -1.494120pn.random.randint(low [, high, size, dtype]):用来在制定范围生成随机整数。

pd.DataFrame(np.random.randint(0,100,[5,2]))

##[0,100)的5行2列随机整数

Out[20]:

0 1

0 24 44

1 56 93

2 95 90

3 42 18

4 39 90

如果要改变随机数字的范围,可以在生成的随机数字的基础上再进行运算。

4.2 Python random模块的random函数random.random():生成一个[0, 1)之间的随机实数

random.uniform(1, 3): 生成一个1-3之间均匀分布的实数

random.randint(a, b):生成一个介于a和b之间的整数

random.randrange(start, stop, step):相当于从start到stop之间,按照步长step随机抽取一个整数

random.randrange(2, 10, 2) ##从2,4,6,8中随机抽取一个

Out[26]: 8

5 小结四大统计软件对比:总的来说,R语言的随机数生成效果是最好的,一个函数可以指定数字个数和分布类型。其次Stata的比较直观,效率也很高。Python的优势在于,转化为数据框很方便

随机数字的生成基于某种函数或分布,通常默认使用的是均匀分布函数,另外正太分布也很常用

Python-R-Stata-Excel多种软件交叉学习,有助于我们对统计知识和数据分析的全面理解

—–全文结束—–

文章知识点与官方知识档案匹配,可进一步学习相关知识Python入门技能树首页概览214769 人正在系统学习中 相关资源:解析8583 文工具源码_8583 文60域-C++代码类资源-CSDN文库

声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!

上一篇 2020年11月13日
下一篇 2020年11月13日

相关推荐