当前位置:文档之家› excel产生随机数的方法

excel产生随机数的方法

excel产生随机数的方法
excel产生随机数的方法

一、正态分布的随机小数

1、产生符合正态分布的随机数:输入“=NORMINV(RAND(),mean,standard_dav)”,mean 是均值,standard_dav是标准方差。

2、下拉的方式产生需要数目的随机数,全选,复制,再右键点“选择性粘贴”,选“数值”(这样做的目的是为了将公式形式去掉,不然它会再次产生新的随机数,而你被蒙在鼓里),然后排序。

3、另起一栏,输入“=NORMDIST(X,mean,stardard_dav,false)”,X是刚才输入的随机数所在位置,产生概率后,下拉,得到需要的全部随机数对应的概率,然后就可以作出我们熟悉的正态分布曲线了。

二、产生随机数

1、0-1的小数

“=RAND()”

2、生成制定范围的随机整数

“=RANDBETWEEN(范围下限整数,范围上限整数)”

3、将带小数的数值变成整数,首先要知道你是要四舍五入,还是进1,还是去尾取整。这三种取整方式分别用函数round, roundup和rounddown就可以了,函数括号里,第一个是单元格,第二个是你想保留小数位的个数,因为这边是取整,所以输入0就可以了

三、产生满足正态分布的随机整数

公式:=ROUND(NORMINV(RAND(),mean,standard_dav),0),其中mean是均值,standard_dav是标准方差(四舍五入)

C语言中产生随机数的方法

C语言中产生随机数的方法 引例:产生10个[100-200]区间内的随机整数。 #include #include //rand函数的头文件 #include //时间函数的头文件 int main() { int i; //循环变量 srand((unsigned) time(NULL)); //产生随机数的起始数据(以时间为种子) for (i=0; i<10; i++) //printf("%d\n", rand()); //产生[0,0x7fff)即[0,32767)以内的随机整数 //printf("%d\n", rand()%100); //产生0-99的随机整数 printf("%d\n", rand()%(200-100+1) + 100); //产生[100,200]内的随机整数return 0; } 在C语言中产生随机数需要以下几个函数的配合使用。 (1)rand函数——产生伪随机数 原型:int rand(void) 头文件:stdlib.h 功能:产生从0到RAND_MAX之间的随机数。RAND_MAX的值通常是0x7fff(十六进制数7FFF,也就是十进制数32767)。 例: #include #include int main() { int k; k = rand(); printf("%d\n", k); return 0; } 编译运行,发现每次运行程序产生的随机数都是一样的。 计算机中产生随机数,实际是采用一个固定的数作为“种子”,在一个给定的复杂算法中计算结果,所以叫“伪随机数”。 C语言中由于采用固定的序列作为种子,所以每次执行所取的是同一个数。 为上面的例子增加一个循环结构: #include #include int main() { int k,i;

EXCEL中的随机函数

在EXCEL中设一个公式:=INT(RAND()(33-1)+1), 浏览次数:26次悬赏分:0 |解决时间:2011-7-15 23:48 |提问者:592379518 最佳答案 公式错误,乘号不能省. =INT(RAND()*(33-1)+1) 意思为:产生1~32的随机数,若要产生1~33的随机数,公式可改成: =1+ROUND(RAND()*(33-1),) 或者 =1+INT(RAND()*33) 用Excel随即函数=INT(33*RAND()+1)产生了随机函数,但是怎么让它一直固定某个数字不改变呢? 浏览次数:308次悬赏分:0 |解决时间:2011-4-20 17:35 |提问者:炒牛奶 比如我在A1输入:=INT(33*RAND()+1) 然后A1显示了一个随机数字,比如9 但是如果我在A2里面也输入:=INT(33*RAND()+1) 然后A2里面也出现了一个随机数字24,但是同时A1里面的随机数字再次随机了一下,变了 怎么样让A1第一次随机显示出9后,永远就是9,无论我后面在其他单元格再次输入随机函数,A1还是显示9不变 最佳答案 这个很简单呀,点菜单中的“工具”.点“选项”,点“重新计算”,“手动重算”那里打勾,确认就可以了.

要用EXCEL中的随机函数rand函数返回1-33之间的6个整数,该如何编程?如果在SPSS的环境里呢? 浏览次数:809次悬赏分:0 |解决时间:2010-5-15 06:45 |提问者:ibeauty_ftes 最佳答案 =INT(RAND()*(33-1+1)) 向下拖六行 要用EXCEL中的随机函数rand函数返回0-36之间的随机数,该如何做?试编辑一个公式达到该目的 浏览次数:1675次悬赏分:5 |解决时间:2007-9-3 14:30 |提问者:monkey2004574 最佳答案 =RAND()*36 EXCEL随机函数RAND() 浏览次数:1635次悬赏分:10 |解决时间:2008-3-30 11:16 |提问者:lizhidan1120 我想在0、5、10 中间随机生成一个数可以么? 该怎么做!!望高人指点!!谢谢!!!! 最佳答案 =IF(RAND()>0.3,IF(RAND()>0.6,10,5),0) 其他回答共1条十三级 =INT(RAND()*3)*5 已向网友提问等?

EXCEL随机数据生成方法

求教:我的电子表格中rand()函数的取值范围是-1到1,如何改回1到0 回答:有两种修改办法: 是[1-rand()]/2, 或[1+rand()]/2。 效果是一样的,都可生成0到1之间的随机数 电子表格中RAND()函数的取值范围是0到1,公式如下: =RAND() 如果取值范围是1到2,公式如下: =RAND()*(2-1)+1 RAND( ) 注解: 若要生成a 与b 之间的随机实数: =RAND()*(b-a)+a 如果要使用函数RAND 生成一随机数,并且使之不随单元格计算而改变,可以在编辑栏中输入“=RAND()”,保持编辑状态,然后按F9,将公式永久性地改为随机数。 示例 RAND() 介于0 到1 之间的一个随机数(变量) =RAND()*100 大于等于0 但小于100 的一个随机数(变量) excel产生60-70随机数公式 =RAND()*10+60 要取整可以用=int(RAND()*10+60) 我想用excel在B1单元个里创建一个50-80的随机数且这个随机数要大于A1单元个里的数值,请教大家如何编写公式! 整数:=ROUND(RAND()*(80-MAX(50,A1+1))+MAX(50,A1+1),0) 无需取整数:=RAND()*(80-MAX(50,A1))+MAX(50,A1)

要求: 1,小数保留0.1 2,1000-1100范围 3,不要出现重复 =LEFT(RAND()*100+1000,6) 至于不许重复 你可以设置数据有效性 在数据-有效性设 =countif(a:a,a1)=1 选中a列设有效性就好了 其他列耶可以 急求excel随机生成数字的公式,取值要在38.90-44.03之间,不允许重复出现,保留两位小数,不允许变藏 =round(RAND()*5+38.9,2) 公式下拉 Excel随机数 Excel具有强大的函数功能,使用Excel函数,可以轻松在Excel表格产生一系列随机数。 1、产生一个小于100的两位数的整数,输入公式=ROUNDUP(RAND()*100,0)。 RAND()这是一个随机函数,它的返回值是一个大于0且小于1的随机小数。ROUNDUP 函数是向上舍入数字,公式的意义就是将小数向上舍入到最接近的整数,再扩大100倍。 2、产生一个四位数N到M的随机数,输入公式=INT(RAND()*(M-N+1))+N。 这个公式中,INT函数是将数值向下取整为最接近的整数;因为四位数的随机数就是指从1000到9999之间的任一随机数,所以M为9999,N为1000。RAND()的值是一个大于0且小于1的随机小数,M-N+1是9000,乘以这个数就是将RAND()的值对其放大,用INT 函数取整后,再加上1000就可以得到这个范围内的随机数。[公式=INT(RAND()*(9999-1000+1))+1000] 3、Excel函数RANDBETWEEN是返回位于两个指定数之间的一个随机数。使用这一个函数来完成上面的问题就更为简单了。要使用这个函数,可能出现函数不可用,并返回错误值#NAME?。 选择"工具"菜单,单击"加载宏",在"可用加载宏"列表中,勾选"分析工具库",再单击"确定"。接下来系统将会安装并加载,可能会弹出提示需要安装源,也就是office安装盘。放入光盘,点击"确定",完成安装。 现在可以在单元格输入公式=RANDBETWEEN(1000,9999)。 最后,你可以将公式复制到所有需要产生随机数的单元格,每一次打开工作表,数据都会自动随机更新。在打开的工作表,也可以执行功能键F9,每按下一次,数据就会自动随机更新了。

MATLAB随机数生成

2009年03月20日星期五 03:25 P.M. rand(n):生成0到1之间的n阶随机数方阵 rand(m,n):生成0到1之间的m×n 的随机数矩阵 (现成的函数) 另外: Matlab随机数生成函数 betarnd 贝塔分布的随机数生成器 binornd 二项分布的随机数生成器 chi2rnd 卡方分布的随机数生成器 exprnd 指数分布的随机数生成器 frnd f分布的随机数生成器 gamrnd 伽玛分布的随机数生成器 geornd 几何分布的随机数生成器 hygernd 超几何分布的随机数生成器 lognrnd 对数正态分布的随机数生成器 nbinrnd 负二项分布的随机数生成器 ncfrnd 非中心f分布的随机数生成器 nctrnd 非中心t分布的随机数生成器 ncx2rnd 非中心卡方分布的随机数生成器 normrnd 正态(高斯)分布的随机数生成器 poissrnd 泊松分布的随机数生成器 raylrnd 瑞利分布的随机数生成器 trnd 学生氏t分布的随机数生成器 unidrnd 离散均匀分布的随机数生成器 unifrnd 连续均匀分布的随机数生成器 weibrnd 威布尔分布的随机数生成器 (From:https://www.doczj.com/doc/b64194398.html,/question/30033707.html) matlab生成随机数据 matlab本身提供很多的函数来生成各种各样的随机数据: normrnd 可以生成一定均值和标准差的正态分布 gamrnd 可以生成gamma分布的伪随机数矩阵 chi2rnd 可以生成卡方分布的伪随机数矩阵 trnd 可以生成t分布的伪随机数矩阵 frnd 可以生成f分布的伪随机数矩阵 raylrnd 可以生成rayleigh分布的伪随机数矩阵

在excel中产生随机数

用excel产生随机数 统计软件提供的随机数发生器可以使我们对抽样分布进行计算机模拟,对抽样分布有更加直观的理解。Excel的分析工具库中有一个“随机数发生器”模块,可以产生服从大部分常用分布的模拟数据,但没有提供直接产生随机数的函数。在SPSS中产生随机数的函数在“Randomnumbers”类别中,相应的函数都是以Rv 开头的。 1 样本均值抽样分布的随机模拟 假总体的均值为μ,标准差为σ,则统计理论表明,不论总体的分布如何,只要样本容量n足够大,样本均值的分布总会趋向于正态分布,且均值为μ,标 准差为。 例题:假设总体为均匀分布,模拟样本均值的抽样分布。 假设总体的分布为0-1区间上的均匀分布,则总体的均值为0.5,方差等于 1/12,标准差等于0.288675。现在,我们从总体中抽取1000个样本容量为2的样本(有放回抽样),计算每个样本的样本均值,然后观察样本均值的分布状况。 新建一个Excel工作簿,单击“工具”“数据分析”“随机数发生器”,在弹出的对话框中把变量个数设为2,随机数个数为1000,选择0-1区间的均匀分布,结果放在新工作表中(图1)。把输出结果的每一行看作一个容量为2的样本,共有1000个样本。在C列中计算每个样本的均值。接下来我们就可以分析这1000个样本均值的分布状况了。由于SPSS的直方图工具更为方便,我们把相应的数据复制到SPSS中作直方图,结果如图2,抽样分布的均值为0.5097,标准差为 0.20345,理论值等于0.288675/ 2 =0.20412,两者差异不大。 图1 随机数发生器对话框

图2 样本均值的抽样分布,样本容量=2 2 样本比例抽样分布的随机模拟 样本比例实质上就是指标数值只能取0和1时的样本均值。由于在这种情况下总体的分布为0-1分布,因此在重复抽样的条件下样本均值抽样分布的理论分布是二项分布。中心极限定理表明当样本用量足够大(能够保证np≥5,nq≥5)时二项分布可以用正态分布来近似。 [例] 假设有大批零件,不合格率p为0.2。随机模拟从总体中抽取样本容量分别为5,20,50的2000个样本,分析样本比例p? 的抽样分布。 新建一个工作表,在单元格中输入图5-10左上角所示的信息作为总体:总体中取值为1(不合格)的概率为0.2,取值为0(合格)的概率为0.8。 图3 二项分布的随机模拟

C语言生成随机函数

程序有一个参数,表示生成的密码的长度 运行的时候要加上,比如./password 8 我写的很简单,参数没做检查,你应该自己去完善一下。 #include #include #include void generate(int len,char* buffer) { /*产生密码用的字符串*/ static const char string[]= "0123456789abcdefghiljklnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ"; int i = 0; for(; i < len; i++) { buffer[i] = string[rand()%strlen(string)]; /*产生随机数*/ } } int main(int argc, char* argv[]) { int len = atoi(argv[1]); /*指定生成的密码长度*/ srand(time(0)); /*设定随机数种子*/ char *buffer = (char*)malloc(len + 1); /*分配内存*/ generate(len,buffer); /*生成密码*/ puts(buffer); /*输出到屏幕*/ FILE* fp = fopen("pass","w"); /*打开输出文件*/ if(fp == NULL) return -1; fwrite(buffer, sizeof(char), len, fp); /*写文件*/ fclose(fp); /*关闭文件*/ free(buffer); /*释放动态分配的内存*/ return 0; /*程序结束*/ } 自己可以写一个函数。 IT生活系列群: 50337593 IT-live(软件开发) 计算机软件技术群,技术是相通的,大家取长补短,共同进步吧!--软件不仅仅是一种思想。他是一门艺术 30633141 IT-live(网站建设)

Excel的随机数函数

Excel的随机数函数 1、生成随机数字(1)生成随机数比较简单,=rand()即可生成0-1之间的随机数;(2)如果要是整数,就用=int(rand())*10,表示0至9的整数,以此类推;(3)如果要生成a与b 之间的随机实数,就用=rand()*(b-a)+a,如果是要整数就用=int(rand()*(b-a))+a;稍微扩充一下,就能产生固定位数的整数了。注意:如果要使用函数rand()生成一随机数,并且使之不随单元格计算而改变,可以在编辑栏中输入“=rand()”,保持编辑状态,然后按F9,将公式永久性地改为随机数。不过,这样只能一个一个的永久性更改,如果数字比较多,也可以全部选择之后,另外选择一个合适的位置粘贴,粘贴的方法是点击右键,选择“选择性粘贴”,然后选择“数值”,即可将之前复制的随机数公式产生的数值(而不是公式)复制下来! 2、产生随机字母随机小写字母:=CHAR(INT(RAND()*26)+97) 随机大写字母:=CHAR(I NT(RAND()*26)+65) 随机大小写混合字母:=CHAR(INT(RAND()*26)+if(INT(RAND()*2) =0,65,97)) 3、随机不重复数字序列的生成方法 (1)在A1-A52间填入"=INT(RAND()*52)+1",产生1-52间的随机数,注意这里是有重复的 (2)在B1-B52间填入1-52 (3)在C54-BB54填入1-52 (4)在C1填入"=IF(ROW()=C$54,I NDEX(B$1:B$52,INDEX($A$1:$A$52,C$54)),IF(ROW()=INDEX($A$1:$A$52,C$54),INDEX (B$1:B$52,C$54),B1))"。分项解释: a:ROW()=C$54,如果当前行等于当前交换所排的序号 b:INDEX(B$1:B$52,INDEX($A$1:$A$52,C$54)),返回在B1到B52中选择A1:A 52中的第C54个值 c:IF(ROW()=INDEX($A$1:$A$52,C$54),否则的话,如果当前行等于A1:A52中第C54个值,则: d:INDEX(B$1:B$52,C$54),返回B1:B52中的第C54个值 e:若以上条件都不满足,则返回B1 (5)将C1复制到C1:BA52这个区域里面,在BA1: BA52中,我们就得到了一个不重复的随机序列,

随机数生成函数C

随机数生成函数srand() rand() 2007年12月11日星期二01:42 如果srand每次输入的数值是一样的,那么每次运行产生的随机数也是一样的,srand(n) for(10) rand() 也就是说,以一个固定的数值作为种子是一个缺点。通常的做法是以这样一句代码srand((unsigned) time(NULL));来取代,这样将使得种子为一个不固定的数,这样产生的随机数就不会每次执行都一样了。 1,先看一个例子 #include #include #include using namespace std; int main( void ) { int i; /* Seed the random-number generator with current time so that * the numbers will be different every time we run. */ srand( (unsigned)time( NULL ) ); /* Display 10 numbers. */ for( i = 0; i < 10;i++ ) printf( " %6d\n", rand() ); } 2.关于time.h time.h中包含很多有趣的函数,譬如 char *ctime(long *clock) 本函数把clock所指的时间(如由函数time返回的时间)转换成下列格式的 字符串:Mon Nov 21 11:31:54 1983\n\0 #i nclude #i nclude #i nclude using namespace std; void main() {

excel的生成随机数的函数用法

excel的生成随机数的函数用法 excel的生成随机数的函数用法: 生成随机数函数使用步骤1:首先介绍一下如何用rand()函数来生成随机数(同时返回多个值时是不重复的)。 如下图所示,在单元格中输入=rand(),回车后单元格即返回了一个随机数字。 生成随机数函数使用步骤2:rand()函数返回的随机数字的范围是大于0小于1。因此,也可以用它做基础来生成给定范围内的随机数字。 生成随机数函数使用步骤3:生成制定范围的随机数方法是这样的,假设给定数字范围最小是a,最大是b,公式是:=a+rand()*(b-a)。 生成随机数函数使用步骤4:举例来说,要生成大于60小于100的随机数字,因为(100-60)*rand()返回结果是0到40之间,加上范围的下限60就返回了60到100之间的数字。 生成随机数函数使用步骤5:上面rand()函数返回的0到1之间的随机小数,如果要生成随机整数的话就需要用randbetween()函数了,如下图该函数生成大于等于1小于等于100的随机整数。 生成随机数函数使用步骤6:这个函数的语法是这样的:=randbetween(范围下限整数,范围上限整数),结果返回包含上

下限在内的整数。注意:上限和下限也可以不是整数,并且可以是负数。 生成随机数函数使用步骤7:rand()和randbetween()是生成随机数的基础函数,也可以灵活变通。比如说要生成0.01至1之间包含两位小数的随机数,则可用下图的公式实现: 看了excel的生成随机数的函数用法还看了:1.excel用函数产生随机数的方法 2.怎么利用excel2010的自带的函数生成随机数 3.怎样用excel随机生成数字 4.excel怎么生成随机数 5.excel2010生成随机数的方法 6.excel2007怎么使用randbetween随机数函数 7.随机数函数randbetween在excel中的使用

随机数生成原理 实现方法 不同编程语言的随机数函数

1-0:Microsoft VC++产生随机数的原理: Srand ( )和Rand( )函数。它本质上是利用线性同余法,y=ax+b(mod m)。其中a,b,m都是常数。因此rand的产生决定于x,x被称为Seed。Seed需要程序中设定,一般情况下取系统时间作为种子。它产生的随机数之间的相关性很小,取值范围是0—32767(int),即双字节(16位数),若用unsigned int 双字节是65535,四字节是4294967295,一般可以满足要求。 1-1:线性同余法: 其中M是模数,A是乘数,C是增量,为初始值,当C=0时,称此算法为乘同余法;若C ≠0,则称算法为混合同余法,当C取不为零的适当数值时,有一些优点,但优点并不突出,故常取C=0。模M大小是发生器周期长短的主要标志,常见有M为素数,取A为M的原根,则周期T=M-1。例如: a=1220703125 a=32719 (程序中用此组数) a=16807 代码: void main( ) { const int n=100; double a=32719,m=1,f[n+1],g[n],seed; m=pow(2,31); cout<<"设置m值为"<>seed; f[0]=seed; for(int i=1;i<=n;i++) //线性同余法生成随机数 { f[i]=fmod((a*f[i-1]),(m-1)); g[i-1]=f[i]/(m-1); cout.setf(ios::fixed);cout.precision(6); //设置输出精度 cout<

matlab随机数生成(全部函数)

matlab 全部的随机数函数 (一)Matlab内部函数 a.基本随机数 Matlab中有两个最基本生成随机数的函数。 1.rand() 生成(0,1)区间上均匀分布的随机变量。基本语法: rand([M,N,P ...]) 生成排列成M*N*P... 多维向量的随机数。如果只写M,则生成M*M矩阵;如果参数为[M,N]可以省略掉方括号。一些例子: rand(5,1) %生成5个随机数排列的列向量,一般用这种格式 rand(5) %生成5行5列的随机数矩阵 rand([5,4]) %生成一个5行4列的随机数矩阵 生成的随机数大致的分布。 x=rand(100000,1); hist(x,30); 由此可以看到生成的随机数很符合均匀分布。(视频教程会略提及hist()函数的作用) 2.randn() 生成服从标准正态分布(均值为0,方差为1)的随机数。基本语法和rand()类似。 randn([M,N,P ...]) 生成排列成M*N*P... 多维向量的随机数。如果只写M,则生成M*M矩阵;如果参数为[M,N]可以省略掉方括号。一些例子: randn(5,1) %生成5个随机数排列的列向量,一般用这种格式 randn(5) %生成5行5列的随机数矩阵 randn([5,4]) %生成一个5行4列的随机数矩阵 生成的随机数大致的分布。 x=randn(100000,1); hist(x,50); 由图可以看到生成的随机数很符合标准正态分布。 b.连续型分布随机数 如果你安装了统计工具箱(Statistic Toolbox),除了这两种基本分布外,还可以用Matlab内部函数生成符合下面这些分布的随机数。 3.unifrnd() 和rand()类似,这个函数生成某个区间内均匀分布的随机数。基本语法 unifrnd(a,b,[M,N,P,...]) 生成的随机数区间在(a,b)内,排列成M*N*P... 多维向量。如果只写M,则生成M*M矩阵;如果参数为[M,N]可以省略掉方括号。一些例子:

C语言如何产生随机数

C语言如何产生随机数 1. 基本函数 2. 使用方法 rand()函数返回0到RAND_MAX之间的伪随机数(pseudorandom)。RAND_MAX常量被定义在stdlib.h头文件中。其值等于32767,或者更大。 srand()函数使用自变量n作为种子,用来初始化随机数产生器。只要把相同的种子传入srand(),然后调用rand()时,就会产生相同的随机数序列。因此,我们可以把时间作为srand()函数的种子,就可以避免重复的发生。如果,调用rand()之前没有先调用srand(),就和事先调用srand(1)所产生的结果一样。 每次运行都将输出:1 7 4 0 9 4 8 8 2 4 每次运行都将输出:1 7 4 0 9 4 8 8 2 4 例2的输出结果与例1是完全一样的。

每次运行都将输出:4 0 1 3 5 3 7 7 1 5 该程序取得的随机值也是在[0,10)之间,与srand(1)所取得的值不同,但是每次运行程序的结果都相同。 该程序每次运行结果都不一样,因为每次启动程序的时间都不同。另外需要注意的是,使用time()函数前必须包含头文件time.h。 3. 注意事项 求一定范围内的随机数。 如要取[0,10)之间的随机整数,需将rand()的返回值与10求模。 那么,如果取的值不是从0开始呢?你只需要记住一个通用的公式。 要取[a,b)之间的随机整数(包括a,但不包括b),使用: (rand() % (b - a)) + a 伪随机浮点数。 要取得0~1之间的浮点数,可以用: rand() / (double)(RAND_MAX) 如果想取更大范围的随机浮点数,比如0~100,可以采用如下方法: rand() /((double)(RAND_MAX)/100) 其他情况,以此类推,这里不作详细说明。 当然,本文取伪随机浮点数的方法只是用来说明函数的使用办法,你可以采用更好的方法来实现。 举个例子,假设我们要取得0~10之间的随机整数(不含10本身): 大家可能很多次讨论过随机数在计算机中怎样产生的问题,在这篇文章中,我会对这个问题进行更深入的探讨,阐述我对这个问题的理解。 首先需要声明的是,计算机不会产生绝对随机的随机数,计算机只能产生“伪

非常实用的函数生成随机数字

在进行概率测试时(如玩彩票的网友就会经常用到),我们会经常用到随机数。当需要大量的随机数时,也许你会为如何获得这么多符合要求的随机数感到困惑。其实,用WPS表格2007个人版,中心满足你对随意数的各种要求。 一、生成0-1之间的随机数 这个最容易,因为WPS表格内置了随意机生成函数——rand函数,用法也很简单,只要在需要生成随意数的单元格内输入“=rand()”(不含外侧双引号,且所有字符均为半角,如图1)。- 图1 输入完成后回车,该单元格即出现一个大于或等于0,并小于1随机小数。如果你需要很多这样的随机数的话,可以选中该单元格,然后用鼠标左键在该单元格右下角的方形点(即填充柄)按下,并向下拖动到合适的位置,则这一范围内所有的单元格均生成一个随机数,如果还要更多,则再选中已经生成随机数的所有单元格,并在选区右下方如法向右拖动,则拖出的矩形区域内的所有单元格都会生成随机数,要多少有多少啊(图2)!

图2 二、生成0-100之间的整数 用rand函数生成的随机数范围是0-1之间的小数,如果我想要生成0-100之间的任意整数应该如何操作呢?如果还要用rand函数的话,则必须借助另一个函数——round函数。round 函数的格式为:ROUND(数值,小数位数),其功能是“按指定的位数对数值进行四舍五入后返回”。如“round(1.2586,2)”表示取1.2586小数点后2位有效数字,即返回值为“1.26”。

有了round函数的帮助,生成0-100之间的整数就不难了,可以在单元格中输入 “=ROUND(RAND(),2)*100”(不含外侧双引号),即先用RAND函数生成一个0-1之间的随机小数,再取该数值小数点后2位有效数字,然后乘以100,即可生成一个0-100之间的整数。 不过,在WPS表格2007中,引入了一个特别的函数——RANDBETWEEN,这个函数的格式是RANDBETWEEN(最小整数,最大整数),其功能是取最小整数和最大整数之间的随意整数。上面的公式可以改写成“=RANDBETWEEN(0,100)”即可达到相同的效果。 三、随机数生成后不再变动 用以上两个函数生成的随机数都有一个共同的特点,就是每当工作簿中有单元格的内容发生改变时,随机数都会重新计算,也就是说,随机数随时都在变化之中,而不能固定下来。如果你希望这些随机数一旦生成就不再变动,又该如何做呢?其实也很简单,就是在随机数生成后,把它们全部剪切到系统剪贴板,并从“编辑”菜单中选择“选择性粘贴”,并在弹出的窗口中选择“数值”(见图3)。或者,在“常用工具栏”中点击“粘贴工具”右侧的倒三角,并在下拉菜单中选择“值”(如图4)。这样,粘贴后的单元格的值就不会再有变化了。

用c语言产生随机数rand()

用c语言产生随机数rand() 在C语言中,rand()函数可以用来产生随机数,但是这不是真真意义上的随机数,是一个伪随机数,是根据一个数,我们可以称它为种子,为基准以某个递推公式推算出来的一系数,当这系列数很大的时候,就符合正态公布,从而相当于产生了随机数,但这不是真正的随机数,当计算机正常开机后,这个种子的值是定了的,除非你破坏了系统,为了改变这个种子的值,C提供了srand()函数,它的原形是void srand( int a)。 可能大家都知道C语言中的随机函数random,可是random函数并不是ANSI C标准,所以说,random函数不能在gcc,vc等编译器下编译通过。 rand()会返回一随机数值,范围在0至RAND_MAX 间。返回0至RAND_MAX之间的随机数值,RAND_MAX定义在stdlib.h,(其值至少为32767)我运算的结果是一个不定的数,要看你定义的变量类型,int整形的话就是32767。在调用此函数产生随机数前,必须先利用srand()设好随机数种子,如果未设随机数种子,rand()在调用时会自动设随机数种子为1。一般用for语句来设置种子的个数。具体见下面的例子。

一如何产生不可预见的随机序列呢 利用srand((unsigned int)(time(NULL))是一种方法,因为每一次运行程序的时间是不同的。 在C语言里所提供的随机数发生器的用法:现在的C编译器都提供了一个基于ANSI标准的伪随机数发生器函数,用来生成随机数。它们就是rand()和srand()函数。这二个函数的工作过程如下: 1) 首先给srand()提供一个种子,它是一个unsigned int类型,其取值范围从0~65535; 2) 然后调用rand(),它会根据提供给srand()的种子值返回一个随机数(在0到32767之间) 3) 根据需要多次调用rand(),从而不间断地得到新的随机数; 4) 无论什么时候,都可以给srand()提供一个新的种子,从而进一步“随机化”rand()的输出结果。 下面是0~32767之间的随机数程序: #include #include #include //使用当前时钟做种子 void main( void ) {int i; srand( (unsigned)time( NULL ) ); //初始化随机数 for( i = 0; i < 10;i++ ) //打印出10个随机数

用EXCEL按比例生成随机数

用EXCEL按比例生成随机数(或叫按机率生成随机数) 这是百度知道一位同学的提问。要求生成范围为1到50的随机整数,并且,1-15的机率为50%,16-36的机率为30%,37-50的机率为20%。同时还要求生成500组,每组8个。 我当时给出一个公式: =if(rand()<0.5,round(rand()*14,0)+1,if(rand()<0.6,round(rand()*20,0)+16,round(r and()*13,0)+37)) 这里说下用round和用int的区别,用int生成16-36的随机数的话应该用 int(rand()*21+16),而用round可用round(rand()*20+16),这后面的+16放括号里面外面都一样,因为取整操作是由小数部分决定的。 还有我第二个if的判断用的是rand()<0.6而不是小于0.3,这是因为第二个if会执行的机率是50%,50%乘以0.6就是30%。 后来楼主同学又出怪招,要求每组无重复数字,每组从小到大排列。 这个只用单纯的公式的话不好办了。 我写了个VBA: Sub madeRnd() Dim i, j, k, a(8), flag, t Sheets("Sheet1").Select For k = 1 To 500 '生成一组随机数字 For i = 1 To 8 flag = 0 Do Randomize t = Rnd() If t < 0.5 Then a(i) = Int(Rnd() * 15 + 1) ElseIf t < 0.8 Then a(i) = Int(Rnd() * 21 + 16) Else a(i) = Int(Rnd() * 14 + 37) End If If i >= 2 Then For j = 1 To i - 1 If a(i) = a(j) Then flag = 1 Exit For Else

连续型随机变量的生成-Read

连续型随机变量的生成: 1反函数法 采用概率积分变换原理,对于随机变量X的分布函数F(X)可以求其反函数,得: Xi=G(Ri) 其中,Ri为一个0-1区间内的均匀分布的随机变量. F(X)较简单时,求解较易,当F(X)较复杂时,需要用到较为复杂的变换技巧。 1.1平均分布: 例:已知炮弹对目标的方位角Fi在0-2*P内均匀分布,试用(0,1)均匀随机数变换,模拟弹着点方位角的抽样值Fi. 解: R=F(Fi)=Fi/2*PI 得Fi=G(R)=2*PI*R ,其中,R为0-1区间上的均匀分布的随机数. 程序略 1.2指数分布: 指数分布的分布函数为: x<0时,F(x)=0 ; x>=0,F(x)=1-exp(-lamda*x) 利用反函数法,可以求得: x=-lnR/lamda 2正态分布随机变量的生成: 正态分布在概率统计的理论及应用中占有重要地位,因此,能产生符合正态分布的随机变量就在模拟一类的工作中占有相当重要的地位。下面介绍两种方法。 2.1舍选法: 这种方法便捷而有效,且具有一定的代表性,其基本思路是: 在概率密度的函数图像的外围画一个大框,然后在这个框内部产生随机点(rx,ry),根据是否落在概率密度函数的下方,来决定是否要留下这个点。 经过一定的计算变行,符合二维的正态分布的随机变量的生成可按下面的方法进行: 1)产生位于0-1区间上的两个随机数r1和r2.

2)计算u=2*r1-1,v=2*r2-1及w=u^2+v^2 3)若w>1,则返回1) 4) x=u[(-lnw)/w]^(1/2) y=v[(-lnw)/w]^(1/2) 如果为(miu,sigma^2)正态分布,则按上述方法产生x后,x’=miu+sigma*x 由于采用基于乘同余法生成的0-1 上的随机数的正态分布随机数始终无法能过正态分布总体均值的假设检验。而采用C语言的库函数中的随机数生成函数rand()来产生0-1 上的随机数,效果较为理想。 关键程序段(funNorm返回一维的正态分布,而funNorm2则生成二维的随机分布): float funNorm(float miu,float sigma) { float r1,r2; float u,v,w; float x,y; do { r1=MyRnd(); r2=MyRnd(); u=2*r1-1; v=2*r2-1; w=u*u+v*v; }while(w>1); x=u*sqrt(((-log(w))/w)); y=v*sqrt(((-log(w))/w)); return miu+sigma*x; //also could return miu+sigma*y; } typedef struct

如何利用SPSS产生随机数字表

利用SPSS产生随机数字的常用方法 作者简介 徐州医学院公共卫生学院流行病与卫生统计学教研室(221002) 金英良黄水平赵华硕 在医学研究中,科研工作者常常需要把研究对象进行随机分组,实现不同处理因素实验顺序的随机化或在总体中随机抽取部分样本作为研究。以上问题均涉及到统计学中随机化的问题,其目的主要是减少偏性,提高均衡性,是统计学能够得出客观推断的前提。 实现随机化的主要方法有两种,即随机数字表和计算机的随机数发生器。所谓的随机数发生器就是通过一定的算法,对事先选定的随机种子做复杂运算,用产生的结果来近似地模拟完全随机数,这种随机数被称作伪随机数〔1〕。一些医学文献或书籍常常只是简单提及SPSS 产生随机数字的菜单操作命令,没有作为重要知识点进行讲解。笔者主要介绍如何利用SPSS 13·0统计分析软件产生随机数字的常用方法。 利用随机数生成函数生成随机数字在SPSS统计软件中,利用随机数生成函数生成一列随机数字的方法是调用Transform菜单下的compute子菜单,如图1所示。在Function group列表中列出了可以实现各种功能的函数,这里我们选择RandomNumbers,立刻会在其下面的Functions and SpecialVar-iables子对话框中会提供了一系列随机数生成函数列表。不同函数表示各自所产生的随机数字符合特定的分布,如t分布、F分布和Poisson分布等函数,当我们选取相应函数时,其左侧对话框内会有相应的函数功能英文介绍说明。 这里我们以常用的正态分布函数为例进行讲解。 软件所生成的随机数个数与数据库中的记录数相同,这里我们事先建立NO变量,并输入从1到10作为要进行随机化的记录编号。在ComputeVariable对话框下的TargetVariable框中输入随机数的变量名,这里我们定义为random,然后选取Functions and SpecialVariables子对话框下的Rv.Norma,l点击按钮,在Numeric Expression表达式框内会出现函数表达式两个问号分别代表我们要定义的正态分布均数和标准差,这里我们以输入均数=100,标准差=10为例,最后点击OK按钮提交,结果在SPSS13.0数据窗口中的random变量一列会产生一组随机数字,见图2。 利用SPSS13.0软件生成随机数字结果利用随机数生成器生成随机数字首先,调用Transform菜单下的Random NumbeGenerators子菜单。该对话框主要包括ActiveGenerator 和ActiveGenerator Initialization两部分内容。其中ActiveGenerator部分, SPSS13.0软件主要提供了两种随机数字生成器SPSS12Compatible和MersennTwister。SPSS12Compatible: SPSS12及之前版本的随机数字生成器,这里为软件默认选项,一般可以不做修改。Mersenne Twister:基于马特赛特旋转的随机数字生成器。在Active Generator Initialization部分,其功能为随机数生成器初始值设置。Random选项为随机选定随机数种子。在利用计算机产生随机数字的过程中,随机数的产生依赖于随机数种子,随机数字种子不同,会产生一列不同的随机数。如果每次输入同样的种子,就会得到完全相同的一列随机数。FixedVaue选项为由操作者设定随机数种子,可选择1 ~2 000 000 000之间的正整数〔2〕。 利用具体随机数种子生成随机数字的基本步骤: 1·在Fixedvalue选项中填入任意一数字,这里我们以填入50为例,点击Paste按钮,这时会自动弹出SPSS语句编辑窗口(Syntax Editor),使该窗口最小化。 2·选择Transform菜单下的compute子菜单,在TargetVariable输入新的变量名,这里输入random1,在Numeric Expression中,我们重复上面利用正态分布函数生成随机数字的过程,这里仍然选择以100为均数,10为标准差。

为什么excel中norminv(rand()-mean-standard-dev)可以产生符合正态分布的随机数教学文案

均值为1,标准差为0.3的正态分布概率密度函数图 4 4.2 4.4 4.6 4.8 5 5.2 5.4 5. 6 5.86 00.2 0.4 0.6 0.8 1 1.2 1.4 4 4.2 4.4 4.6 4.8 5 5.2 5.4 5. 6 5.8600.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1

均值为1,标准差为0.3的正态分布概率分布函数图 首先看norminv 函数作用: norminv(v,mean,standard_dev)的作用是求出在均值为mean ,标准差为standard_dev 的正态分布函数曲线上对应纵轴为v 那个横轴数值。 即norminv 本质是正态概率分布函数的反函数。 然后找一个具体数值进行分析。 对于我们给定的均值为5,标准差为0.3的正态分布有()5.250.7977P X ≤=。 那通过y=norminv(rand(),5,0.3)(即让v=rand(),即让v 通过01均匀分布函数发生器rand ()产生,或者说v 分布符合01均匀分布)产生的随机数是否有()5.250.7977P y ≤=,或者说为什么当我们让v 通过01均匀分布函数发生器rand ()产生,就有()5.250.7977P y ≤=? 分析解释: 我们知道由于v 通过01均匀分布函数发生器rand ()产生,所以P(v ≤k)=k ,所以 ()0.79770.7977 P v ≤=,即v 出现在正态概率分布函数纵轴[0,0.7977]范围内的概率是0.7977.根据norminv 本质是正态概率分布函数的反函数可知,y=norminv(rand(),5,0.3)出现在正态概率分布函数图像横轴(-∞,5.25]范围内的概率也是0.7977,即()5.250.7977 P y ≤=

相关主题
文本预览
相关文档 最新文档