随机函数

随机函数
随机函数

excel中如何随机选择不重复的数:

excel中带有一个随机函数rand(),但rand()只选取0~1之间的随机数,而且两个数不保证不重复。因此就用到了函数rank。

1、假设要在1~100中随机抽取5个不重复的数。

2、在A1~A100中输入=rand()。

;也就是在A1~A100中随机抽取了100个0~1之间的随机数。

3、在C1中输入=RANK(A1,A:A);C2中输入=RANK(A2,A:A);C3中输入=RANK(A3,A:A)……以此类推。

;目标单元格C1~C5。

;其实,C1~C5中显示的是A1~A5在100个随机数中的排序。

4、已成功抽取1~100中的5个随机数。按ctrl+r刷新。

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(INT(RAND()*26)+65)

随机大小写混合字母:=CHAR(INT(RAND()*26)+if(INT(RAND()*2)=0,65,97))

3、产生随机的六位数的字母和数字混合

=CONCATENATE(IF(INT(RAND()*2)=0,CHAR(INT(RAND()*9+48)),IF(INT(RAND()*2)=0, CHAR(INT(RAND()*25+65)),CHAR(INT(RAND()*25+97)))),IF(INT(RAND()*2)=0,CHAR(I NT(RAND()*9+48)),IF(INT(RAND()*2)=0,CHAR(INT(RAND()*25+65)),CHAR(INT(RAND() *25+97)))),IF(INT(RAND()*2)=0,CHAR(INT(RAND()*9+48)),IF(INT(RAND()*2)=0,CHAR(I NT(RAND()*25+65)),CHAR(INT(RAND()*25+97)))),IF(INT(RAND()*2)=0,CHAR(INT(RAN D()*9+48)),IF(INT(RAND()*2)=0,CHAR(INT(RAND()*25+65)),CHAR(INT(RAND()*25+97)

))),IF(INT(RAND()*2)=0,CHAR(INT(RAND()*9+48)),IF(INT(RAND()*2)=0,CHAR(INT(RAN D()*25+65)),CHAR(INT(RAND()*25+97)))),IF(INT(RAND()*2)=0,CHAR(INT(RAND()*9+4 8)),IF(INT(RAND()*2)=0,CHAR(INT(RAND()*25+65)),CHAR(INT(RAND()*25+97)))))

4、随机不重复数字序列的生成方法

有些情形下,我们需要生成一个不重复的随机序列。

比如:我们要模拟洗牌,将一副扑克牌去掉大小怪后剩下的52张打乱。

比较笨的方法是在1-52间每生成一个随机数后,检查该随机数是否出现过,如果是第一次出现,就放到序列里,否则重新生成一个随机数作检查。在excel worksheet里面用这种办法,会造成if多层嵌套,不胜其烦,在VBA里面做简单一些,但是效率太差,越到序列的后端,效率越差。

当然也有比较好的办法,在VBA里面,将a(1)-a(52)分别赋予1-52,然后做52次循环,例如,第s次生成一个1-52间的随机数r,将a(s)与a(r)互换,这样的话,就打乱了原有序列,得到一个不重复的随机序列。

VBA里这个算法是很容易实现的,但是,出于通用性和安全考虑,有的时候我们并不希望用VBA,我们来看看在worksheet里面如何利用内置函数实现这个功能。

(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,INDEX(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:A52中的第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这个区域里面

(6)在BA1:BA52中,我们就得到了一个不重复的随机序列,按F9可以生成一个新序列。随机产生六位数字密码=INT(RAND()*(899999-10001))+100001

EXCEL生成前2位是大写字母,中间4位是小写字母,后两位是数字

=CHAR(65+INT(RAND()*16))&CHAR(65+INT(RAND()*16))&CHAR(97+INT(RAND()*16)) &CHAR(97+INT(RAND()*16))&CHAR(97+INT(RAND()*16))&CHAR(97+INT(RAND()*16)) &INT(RAND()*10)&INT(RAND()*10

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;

java随机函数用法Random

java随机函数用法Random import java.util.Random; public class RandomNumber{ public static void main(String[] args) { // 使用https://www.360docs.net/doc/5010347997.html,ng.Math的random方法生成随机数System.out.println("Math.random(): " + Math.random()); // 使用不带参数的构造方法构造java.util.Random对象System.out.println("使用不带参数的构造方法构造的Random对象:"); Random rd1 = new Random(); // 产生各种类型的随机数 // 按均匀分布产生整数 System.out.println("int: " + rd1.nextInt()); // 按均匀分布产生长整数 System.out.println("long: " + rd1.nextLong()); // 按均匀分布产生大于等于0,小于1的float数[0, 1) System.out.println("float: " + rd1.nextFloat());

// 按均匀分布产生[0, 1)范围的double数 System.out.println("double: " + rd1.nextDouble()); // 按正态分布产生随机数 System.out.println("Gaussian: " + rd1.nextGaussian()); // 生成一系列随机数 System.out.print("随机整数序列:"); for (int i = 0; i < 5; i++) { System.out.print(rd1.nextInt() + " "); } System.out.println(); // 指定随机数产生的范围 System.out.print("[0,10)范围内随机整数序列: "); for (int i = 0; i < 10; i++) { // Random的nextInt(int n)方法返回一个[0, n)范围内的随机数 System.out.print(rd1.nextInt(10) + " "); } System.out.println(); System.out.print("[5,23)范围内随机整数序列: "); for (int i = 0; i < 10; i++) {

引用java中随机函数的使用

引用java中随机函数的使用 引用 axunlb的java中随机函数的使用 java中随机函数的使用 Random N = new Random(1000);中的1000产生的随机数在0到1000之间,参数用于指定随机数产生的范围 方法1 (数据类型)(最小值+m()*(最大值-最小值+1)) 例: (int)(1+m()*(10-1+1)) 从1到10的int型随数 方法2 获得随机数 for (int i=0;i<30;i++) {.println((int)(1+m()*10));} (int)(1+m()*10) 通过包的random方法得到1-10的int随机数 公式是:最小值---最大值(整数)的随机数

(类型)最小值+m()*最大值 方法3 Random ra =new Random(); for (int i=0;i<30;i++) {.println(ra.nextInt(10)+1);} 通过包中的Random类的nextInt方法来得到1-10的int随机数import .*; class Test { public static void main(String args[]) { int[] t = new int[10]; Random rand = new Random(); for(int i=0;i

} } } java中Random的构造函数Random()中默认的种子就是当前时间和midnight, January 1, 1970 UTC的差值(用毫秒计),所以每次运行程序都可以得到不同的结果nt()也可以如此用r.nextInt(100)—–100以内的随机数

C# Random随机函数使用方法

C# Random随机函数使用方法 随机数的使用很普遍,可用它随机显示图片,用它防止无聊的人在论坛灌水还可以用来加密信息等等。本文讨论如何在一段数字区间内随机生成若干个互不相同的随机数,比如在从1到20间随机生成6个互不相同的整数,并通过此文介绍Visual c#中随机数的用法。 .net.Frameword中提供了一个专门产生随机数的类System.Random,此类默认情况下已被导入,编程过程中可以直接使用。我们知道,计算机并不能产生完全随机的数字,它生成的数字被称为伪随机数,它是以相同的概率从一组有限的数字中选取的,所选的数字并不具有完全的随机性,但就实用而言,其随机程度已经足够了。 我们可以用以下两种方法初始化一个随机数发生器; 函数是这样用,比如100至999的随机数 Random ran=new Random(); int RandKey=ran.Next(100,999); 不过这样会有重复,可以给Random一个系统时间做为参数,以此产生随机数,就不会重复了 第一种方法不指定随机种子,系统自动选取当前时前作随机种子: Random ra=new Random(); 第二种方法是指定一个int型的参数作为随机种子: int iSeed=6; Random ra=new Random(iSeed); 下面我们要用到Random.Next()方法产生随机数。 ra.Next(); 它返回一个大于或等于零而小于2,147,483,647的数,这并不满足我们的需要,下面我们介绍它的重载函数和其它一些方法。 public virtual int Next(int); 用法:ra.next(20)

实用C语言中有关随机函数的使用详解

c语言中有关随机函数的使用详解 在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 #inl #include #include #include main( ) { int i; srand( (unsigned)time( NULL ) ); for( i = 0; i 10;i++ )

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中,我们就得到了一个不重复的随机序列,

EXCEL随机函数实例

EXCEL随机函数实例 excel中如何随机选择不重复的数: excel中带有一个随机函数rand(),但rand()只选取0~1之间的随机数,而且两个数不保证不重复。因此就用到了函数rank。 1、假设要在1~100中随机抽取5个不重复的数。 2、在A1~A100中输入=rand()。 ;也就是在A1~A100中随机抽取了100个0~1之间的随机数。 3、在C1中输入=RANK(A1,A:A);C2中输入=RANK(A2,A:A);C3中输入=RANK(A3,A:A)……以此类推。 ;目标单元格C1~C5。 ;其实,C1~C5中显示的是A1~A5在100个随机数中的排序。 4、已成功抽取1~100中的5个随机数。按ctrl+r刷新。 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(INT(RAND()*26)+65) 随机大小写混合字母:=CHAR(INT(RAND()*26)+if(INT(RAND()*2)=0,65,97)) 3、产生随机的六位数的字母和数字混合 =CONCA TENATE(IF(INT(RAND()*2)=0,CHAR(INT(RAND()*9+48)),IF(INT(RAND()*2)=0, CHAR(INT(RAND()*25+65)),CHAR(INT(RAND()*25+97)))),IF(INT(RAND()*2)=0,CHAR(IN T(RAND()*9+48)),IF(INT(RAND()*2)=0,CHAR(INT(RAND()*25+65)),CHAR(INT(RAND()*2

matlab随机函数rand使用中应注意的问题

matlab随机函数rand使用中应注意的问题 rand产生的是0到1(不包括1)的随机数. matlab的rand函数生的是伪随机数,即由种子递推出来的,相同的种子,生成相同的随机数. matlab刚运行起来时,种子都为初始值,因此每次第一次执行rand得到的随机数都是相同的. 1.多次运行,生成相同的随机数方法: 用rand('state',S)设定种子 S为35阶向量,最简单的设为0就好 例: rand('state',0);rand(10) 2. 任何生成相同的随机数方法: 试着产生和时间相关的随机数,种子与当前时间有关. rand('state',sum(100*clock)) 即: rand('state',sum(100*clock)) ;rand(10) 只要执行rand('state',sum(100*clock)) ;的当前计算机时间不现,生成的随机值就不现. 也就是如果时间相同,生成的随机数还是会相同. 在你计算机速度足够快的情况下,试运行一下: rand('state',sum(100*clock));A=rand(5,5);rand('state',sum(100*clock));B=rand(5,5); A和B是相同. 所以建议再增加一个随机变量,变成: rand('state',sum(100*clock)*rand(1)); 据说matlab 的rand 函数还存在其它的根本性的问题,似乎是非随机性问题. 没具体研究及讨论,验证过,不感多言. 有兴趣的可以查阅: Petr Savicky Institute of Computer Science Academy of Sciences of CR Czech Republic savicky@cs.cas.cz September 16, 2006 Abstract

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中的使用

随机函数

excel中如何随机选择不重复的数: excel中带有一个随机函数rand(),但rand()只选取0~1之间的随机数,而且两个数不保证不重复。因此就用到了函数rank。 1、假设要在1~100中随机抽取5个不重复的数。 2、在A1~A100中输入=rand()。 ;也就是在A1~A100中随机抽取了100个0~1之间的随机数。 3、在C1中输入=RANK(A1,A:A);C2中输入=RANK(A2,A:A);C3中输入=RANK(A3,A:A)……以此类推。 ;目标单元格C1~C5。 ;其实,C1~C5中显示的是A1~A5在100个随机数中的排序。 4、已成功抽取1~100中的5个随机数。按ctrl+r刷新。 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(INT(RAND()*26)+65) 随机大小写混合字母:=CHAR(INT(RAND()*26)+if(INT(RAND()*2)=0,65,97)) 3、产生随机的六位数的字母和数字混合 =CONCATENATE(IF(INT(RAND()*2)=0,CHAR(INT(RAND()*9+48)),IF(INT(RAND()*2)=0, CHAR(INT(RAND()*25+65)),CHAR(INT(RAND()*25+97)))),IF(INT(RAND()*2)=0,CHAR(I NT(RAND()*9+48)),IF(INT(RAND()*2)=0,CHAR(INT(RAND()*25+65)),CHAR(INT(RAND() *25+97)))),IF(INT(RAND()*2)=0,CHAR(INT(RAND()*9+48)),IF(INT(RAND()*2)=0,CHAR(I NT(RAND()*25+65)),CHAR(INT(RAND()*25+97)))),IF(INT(RAND()*2)=0,CHAR(INT(RAN D()*9+48)),IF(INT(RAND()*2)=0,CHAR(INT(RAND()*25+65)),CHAR(INT(RAND()*25+97)

c语言随机函数的使用

原文地址:C语言:随机函数rand()、srand()、random()和randomized()的区别和用法作者:猎空 声明一点:在VC++中,没有random()和randomize()函数,只有rand()和srand()函数。 其中,random()和randomize()函数的使用的方法分别与rand()和srand()函数的使用方法对应类似。 下面就开始讲rand()和srand()函数的使用: 首先,让我们从宏观的角度,来理解它们的使用机理: 1、这两个函数都在头文件是stdlib.h中 2、rand()函数和srand()函数必须配套使用。 其中,rand()是用来产生随机数的发生器,而srand()函数是用来给rand()函数提供变量(或者称种子)。 因为“种瓜得瓜,种豆得豆”,如果你不通过srand()函数来提供不同的种子,那么rand()函数产生的数就只能是固定的瓜或者豆(其实,如果你的程序中没有使用srand()函数,rand()在产生随机数时,会默认调用srand(1),即种子永远是1)。达不到我们预期的要求。所以 rand()函数总是和srand()函数一起使用。 接下来,让我们看看具体如何调用rand()和srand()函数 1、srand()函数 在VC++中,它的声明是:void srand(unsigned seed) 是一个无返回值、单无符型形参的函数。 根据上面的分析,我们知道产生随机数的一个关键是:在程序每次运行中,让这个seed(种子)都不一样,即是一个可变常数。通常情况下,我们会使用时间来作为seed,即令srand((unsigned)time(NULL))。其中,time()函数在头文件time.h中。time()的声明是:long time(long *locatime),它返回的是一个以秒为单位的当地时间,例如:2010年4月19日17:57:02,则它的返回值是:N(年)*365*24*60*60(这是年部分,还要加月、日、时、分、秒才完整。因为不知道是初始年是哪一年,所以用N表示)我现在这个时刻运行的结果是:1271673894(挺大的一个整数) 2.、rand()函数 在VC++中,它的声明是:int rand(void) ,它返回一个[seed, RAND_MAX (0x7fff))间的随机整数,其中,RAND_MAX是个定值,我用VC++查看是:32767。

excel2003随机函数的使用教程

excel2003随机函数的使用教程 Excel中经常需要使用到随机函数随机生成一些数字,随机函数具体该如何使用呢?下面是小编带来的关于excel2003随机函数的使用教程,希望阅读过后对你有所启发! excel2003随机函数的使用教程随机函数使用步骤1:选中需要生成一批随机数的单元格区域,然后输入公式=RAND(),同时按下CTRL+ENTER组合快捷键。如下图所示 excel2003随机函数的使用教程图1 随机函数使用步骤2:通过步骤1生成的是0到1之间的随机小数, 随机函数使用步骤3:如果要在单元格区域中生成指定范围的随机整数,假如是Excel 2007(含)以上的版本,可以在单元格中输入公式 =RANDBETWEEN(5,100),其中5表示要生成的随机整数的下限,100表示要生成的随机整数的上限。然后用鼠标左键单击单元格格右下角的填充柄不放拖动到其它单元格区域,即可生成一批5到100范围内的随机整数。如下图所示: excel2003随机函数的使用教程图2 随机函数使用步骤4:假如是Excel 2003 版本,则可以在单元格中输入公式=INT(RAND()*5)+95,其中5表示要生成的随机整数的下限,95表示要生成的随机整数的间隔(即100-5)。然后用鼠标左键单击单元格格右下角的填充柄不放拖动到其它单元格区域,即可生成一批5

到100范围内的随机整数。如下图所示: excel2003随机函数的使用教程图3 随机函数使用步骤5:假如要生成一序列不重复的随机数,则可以按照以下的步骤来实现。 随机函数使用步骤6:首先利用=RAND()函数将会生成0-1之间的不重复随机数的特点,先生成一批不重复的0-1之间的随机数。 如下图所示 excel2003随机函数的使用教程图4 随机函数使用步骤7:然后根据它生成的随机数是不重复的特点,可以用RANK函数对这批随机数进行排序,得到的将是一批不重复的随机整数。 随机函数使用步骤8:如下图所示,在B1单元格输入公式=RANK(A1,$A$1:$A$10) excel2003随机函数的使用教程图5看了excel2003随机函数的使用教程还看了:1.excel2003if函数的简单使用教程 2.excel 随机数函数的使用教程 3.excel 随机数字公式的使用教程 4.excel2003中数据透视表功能的使用教程 5.excel2003输入函数的教程 6.excel2003用count函数的教程

RAND函数的用法

rand() 函数说明: 因为rand的内部实现是用线性同余法做的,他不是真的随机数,只不过是因为其周期特别长,所以有一定的范围里可看成是随机的,rand()会返回一随机数值,范围在0至RAND_MAX 间。在调用此函数产生随机数前,必须先利用srand()设好随机数种子,如果未设随机数种子,rand()在调用时会自动设随机数种子为1。rand ()产生的是假随机数字,每次执行时是相同的。若要不同,以不同的值来初始化它.初始化的函数就是srand()。 返回值: 返回0至RAND_MAX之间的随机整数值,RAND_MAX的范围最少是在32767之间(int),即双字节(16位数)。若用unsigned int 双字节是65535,四字节是4294967295的整数范围。 0~RAND_MAX每个数字被选中的机率是相同的。 rand()函数是产生随机数的一个随机函数。C语言里还有 srand()函数等。 详述rand() (1)使用该函数首先应在开头包含头文件stdlib.h #include (2)在标准的C库中函数rand()可以生成0~RAND_MAX之间的一个随机数,其中RAND_MAX 是stdlib.h 中定义的一个整数,它与系统有关。 (3)rand()函数没有输入参数,直接通过表达式rand()来引用;例如可以用下面的语句来打印两个随机数: printf("Random numbers are: %i %i\n",rand(),rand()); (4)因为rand()函数是按指定的顺序来产生整数,因此每次执行上面的语句都打印相同的两个值,所以说C语言的随机并不是真正意义上的随机。 (5)为了使程序在每次执行时都能生成一个新序列的随机值,我们通常通过为随机数生成器提供一粒新的随机种子。函数 srand()(来自stdlib.h)可以为随机数生成器播散种子。只要种子不同rand()函数就会产生不同的随机数序列。srand()称为随机数生成器的初始化器。 例子 文件名: rand_srand.c /* This program generates and prints ten random integers between 1 and RAND_MAX*/ #include

随机函数使用方法

1.rand()与srand() 在C语言函数库中包含了一个产生随机数的函数: int rand( ); 返回的是一个界于0~32767之间的伪随机数,包括0和32767。注意,这里产生的是伪随机数,不是真正意义上的随机数,看下面的程序: #include "stdlib.h" #include "stdio.h" void main( void ) { printf( " %6d\n", rand() ); getchar(); } 程序运行的结果是: 346 多次运行这个程序,发现每次产生的结果都是346(不同的机器可能产生的结果不一样),这就是所谓的伪随机数。伪随机数是通过一个公式来运算出来的,所以,每次产生的伪随机数都一样。那么,如何才能产生真正意义上的随机数呢?这就有一个随机种子的问题。在C 语言标准函数库中,有另一个配套函数: void srand( unsigned int seed ); 所以,要产生真正意义上的随机数,那么就要求每次提供的种子不一样,一般情况下,都设置时间为随机函数的种子。看下面的一段程序: #include "stdlib.h" #include "stdio.h" #include "time.h" void main( void ) { int i; srand( (unsigned)time( NULL ) ); printf( “ %6d\n”, rand() ); } Output 6929 8026 21987 30734 20587 6699

22034 25051 7988 10104 每次运行这个程序,产生的随机数都不一样,这样就达到了随机数的要求了 2.random与randomize() 打开标准库中的头文件stdlib.h 就会发现有这样的一条语句: #define random(num) (rand() % (num)) 可见要产生给定范围的随机数,可以使用random()。 #define randomize() srand((unsigned)time(NULL)) 所以random(num)是产生一个0—num-1的一个整数 randomize() 是随机数产生发生器(在VC中没有该函数) 注意:使用上述函数将stdlib.h包含进去。

C语言生成随机数的方法及注意事项

C语言生成随机数 1.可能用到的函数:randomize(),srand(),rand(),random(). ◎void randomize(void) 通过time函数来得到一个随机数,此数将成为起始发生数据 (stdlib.h | time.h) ◎void srand(unsigned number) 该函数和rand函数配合使用,产生随机数的起始发生数据 ◎int rand(void) 产生一个随机数(0到0x7fff 之间) (stdlib.h) ◎int random(int num) 得到一个在0和参数num之间的随机数 (stdlib.h) 2.随机数生成的原理 “计算机产生的随机数一般都只是一个周期很长的数列,不是真的随机数。也就是说,随机数一般是伪随机数,每个随机数都是由随机种子开始的一个已定的数列(周期很长)。一般地,为了随机数更真一点,随机种子在系统中通常是参照系统时钟生成的。” 以上引用了别人的话。有几个关键点:一是所谓的随机数是伪随机数,二『伪随机数生成器返回的每一个值完全由它返回的前一个值所决定数(最终,该种子决定了一切)。所以产生随机数,首先要解决随机数种子的问题。下面举几个可能遇到的问题: 一、两次运行产生的随机数列相同 …… for(i=0;i<10;i++) printf("%d",rand()); …… 上面的程序本意是每次运行后,屏幕输出10个随机数。但如果紧紧只是这段代码,那后果就是,无论运行多少次,每次产生的这10个随机数都和前一次生成的10个数一一对应。 可做如下修改: …… randomize(); for(i=0;i<10;i++) printf("%d",rand()); …… 如此,每次运行产生的随机数列就是不同的啦。因为randomize()是以系统时间为随机数种子的。如果两次运行时间间隔大于一秒,那么种子就会不同。 下面这个例子的结果我想大家应该猜得到 …… for(i=0;i<10;i++) { printf("%d",rand()); randomize(); } …… 这将产生10个完全相同的数,下次运行又会产生另外10个相同的数。

c++中的随机函数(rand,sand)的用法[转载]

c++中的随机函数(rand,sand)的用法[转载] 学习园地2007-05-28 13:37:50 阅读243 评论2 字号:大中小订阅 首先我们要对rand&srand有个总体的看法:srand初始化随机种子,rand产生随机数,下面将详细说明。 rand(产生随机数) 表头文件: #include 定义函数 :int rand(void) 函数说明 : 因为rand的内部实现是用线性同余法做的,他不是真的随机数,只不过是因为其周期特别长,所以有一定的范围里可看成是随机的,rand()会返回一随机数值,范围在0至RAND_MAX 间。在调用此函数产生随机数前,必须先利用srand()设好随机数种子,如果未设随机数种子,rand()在调用时会自动设随机数种子为1。rand()产生的是假随机数字,每次执行时是相同的。若要不同,以不同的值来初始化它.初始化的函数就是srand()。 返回值: 返回0至RAND_MAX之间的随机整数值,RAND_MAX的范围最少是在32767之间(int),即双字节(16位数)。若用unsigned int 双字节是65535,四字节是4294967295的整数范围。 0~RAND_MAX每个数字被选中的机率是相同的。 范例: /* 产生介于1 到10 间的随机数值,此范例未设随机数种子,完整的随机数产生请参考 srand()*/ #include main() { int i,j; for(i=0;i<10;i++) { j=1+(int)(10.0*rand()/(RAND_MAX+1.0)); printf("%d ",j); } } 执行: 9 4 8 8 10 2 4 8 3 6 9 4 8 8 10 2 4 8 3 6 //再次执行仍然产生相同的随机数 srand(设置随机数种子)

相关文档
最新文档