python随机生成一个整数n、求s=1+2+3_随机数字生成与数据杜撰—Python、Stata、R和Excel同步实现(附代码)...
在统计软件中3中特殊导入数据的方法包括:3. 随机数生成,也是一种高效自动生成数据的方法。今天我们使用几大统计工具分别进行演示。
在学习随机数生成数据框之前,我们先复习一下怎么在Python中导入自带数据和手工录入数据。
##导入sklearn机器学习包自带的数据集
from sklearn import datasets ##导入datasets
iris = datasets.load_iris() ##导入iris数据集
##手工录入数据
import pandas as pd ##导入pandas包
data = {'name': ['Steph', 'LeBron'],
##用字典的方式,完成数据一列一列的输入
'age': [32, 36 ],
'height': [1.92, 2.06],
'score': [97, 99]}
labels = ['a', 'b']
df1 = pd.DataFrame(data, index=labels)
##用列表labels的取值来当成每行的索引
df1
Out[9]:
name age height score
a Steph 32 1.92 97
b LeBron 36 2.06 99
##添加新行(新的观测值)
df1.loc['c'] = ['Harden', '32', 1.96, 98]
df1
Out[10]:
name age height score
a Steph 32 1.92 97
b LeBron 36 2.06 99
c Harden 32 1.96 98
接下来,我们将逐一讲解如何使用Excel、Stata、R和Python生成随机数字和数据。
一、Excel中的随机数字生成Excel,翻译成中文就是牛p的意思
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”。如下图。
用Excel基于上面4种随机函数生成随机数字,结果如下图。
二、Stata中生成随机数字和数据商业统计软件之王 Stata
2.1 生成[a, b]之间的随机数
通过rniform(a, b)函数实现。默认a=0,b=1
. dis runiform() //返回一个7位的0-1的均匀分布随机小数
. dis 2+(5-2)*runiform() //a+(b-a)*runiform(),生成a到b之间的均匀分布随机小数
2.8006571
可以上句命令的基础上取整:
. dis int(2+(5-2)*runiform())
2
还可以通过指定seed的值来重现随机的结果(可见计算机中随机不是真正的随机,而是随机的模拟)。
. set seed 1898
. set obs 50
. gen var1 = runiform() //0-1之间的随机小数
. gen var2 = int(0+(100-0)*runiform()) //0-100之间的随机整数
*等价于 runiform(0, 100)
结果如下:
2.2 生成服从正太分布的随机数
刚才用到的函数是runiform(a, b),同理我们可以使用rnormal(a, b)来生成服从正太分布的随机数字。这里a是均值,b是方差,默认a=0,b=1。
. dis rnormal(0, 1)
.96945125
再次同理,如果想生成服从其它分布的随机数字,自使用相应的函数即可。具体可以参考Stata的帮助文件,如下图。
三、R语言中的随机数生成开源统计之王 R语言
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。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随机生成一个整数n、求s=1+2+3_随机数字生成与数据杜撰—Python、Stata、R和Excel同步实现(附代码)...相关推荐
- JS如何随机生成一个整数
随机生成一个整数的第一步是要了解2个js方法: 1.JavaScript random() 方法 Math.random(): 返回介于 0(包含) ~ 1(不包含) 之间的一个随机数 2.JavaS ...
- Java黑皮书课后题第3章:3.10(游戏:加法测试)程序清单3-3随机产生一个减法问题。修改这个程序,随机产生一个计算两个小于100的整数的加法问题
3.10(游戏:加法测试)程序清单3-3随机产生一个减法问题.修改这个程序,随机产生一个计算两个小于100的整数的加法问题 题目 题目概述 参考:程序清单3-3 代码 题目 题目概述 3.10(游戏: ...
- 1+r的n次方c 语言怎么写,(1+R)的负N次方等于一个整数,求R的公式!
(1+R)的负N次方等于一个整数,求R的公式! 关注:177 答案:4 手机版 解决时间 2021-01-23 23:11 提问者慢慢学会遗忘 2021-01-23 17:23 比如说(1+R)的 ...
- 3.12 编写程序从键盘输入一个整数,计算并输出该数的数字之和。例如:请输入 一个整数:8899123 各位数字之和为:40
package booksTest;import java.util.Scanner;public class p54_3_12 {public static void main(String[] a ...
- python如何随机生成一个整数_Python生成随机数的方法
如果你对在Python生成随机数与random模块中最常用的几个函数的关系与不懂之处,下面的文章就是对Python生成随机数与random模块中最常用的几个函数的关系,希望你会有所收获,以下就是这篇文 ...
- python生成一个含有20个随机数的列表_python随机模块22个函数详解(上)
作者:小伍哥 来源: AI入门学习 今天给大家纤细介绍下python中的随机模块,随机数可以用于数学,游戏,安全等领域中,还经常被嵌入到算法中,用以提高算法效率,并提高程序的安全性.平时数据分析各种分 ...
- python随机密码生成以整数17为随机数种子_简述pythonpytorch 随机种子的实现
随机数广泛应用在科学研究, 但是计算机无法产生真正的随机数, 一般成为伪随机数. 它的产生过程: 给定一个随机种子(一个正整数), 根据随机算法和种子产生随机序列. 给定相同的随机种子, 计算机产生的 ...
- python输入一个三位数的整数、求该数的3个数字之和_Python3 数字(Number)
Python 数字数据类型用于存储数值. 数据类型是不允许改变的,这就意味着如果改变数字数据类型的值,将重新分配内存空间. 以下实例在变量赋值时 Number 对象将被创建: var1 = 1 var ...
- 用一个随机函数random(),求[0,1]之间的随机小数
srand函数是随机数发生器的初始化函数.原型:void srand(unsigned seed); 用法:它初始化随机种子,会提供一个种子,这个种子会对应一个随机数,如果使用相同的种子后面的rand ...
- python怎么定义一个整数_python整数实现
整数对象定义: typedef struct { PyObject_HEAD long ob_ival; } PyIntObject; 可以看到仅多了一个long域ob_ival来保存整数.之所以用l ...
最新文章
- “编程不规范,同事两行泪!”
- mysql null排在最后面
- 问题排查:vue项目刷新页面加载了500多个请求?
- linux的常用操作——查看和修改文件权限
- 去德国做汉语老师,月薪四万
- python自动化开发和全栈开发_python全栈开发devops运维自动化方向初到高级在线课程分享...
- spring cloud中gateway存在的意义是什么?
- 联想ThinkPad E420安装7450M的显卡驱动后进入不了系统,试了4个系统都不..
- 如何利用Python程序读取Excel创建折线图
- LSTM(长短期记忆网络)原理与在脑电数据上的应用
- vue开发银行流水查询系统--基于巨杉数据库
- 四路组相联原理_计算机组成原理中是如何求是几路组相联映像?
- Stereo Parallel Tracking and Mapping for robot localization(S-PTAM)
- 阿俊带你用Kotlin刷算法(四)
- 计蒜客 2018南京网络赛 I Skr(马拉车+哈希)
- Windows10 2004五月更新正式版官方ISO纯净版镜像下载
- BUG解决记录--iOS13中iPhoneX系统右箭头出现黑框
- “币圈贾跃亭”天价碰瓷巴菲特,王小川隔空回应:骗子!
- 金融专业术语之——信用转换+期限转换+流动性转换
- mt7620a上带机量的提高(一)