在excel中有时候会用到随机函数,其中rand函数是一个可以生成随机数的函数,成数范围是大于等于0小于1,下面就演示随机RAND函数的用法,很实用,很方便!
工具/原料excel
方法/步骤1RAND()只能显示0-1之间的随机数,但是加入我们用RAND()90,那么是不是就是0-90之间的随机数了呢,这个应该不难理解,同时我们在用RAND()90+10是不是就是10-100之间的随机数了呢。
2意思就是如果我们要取a-b之间的随机数,那么我们就只需要输入=RAND()(b-a)+a就可以了。
rand(产生随机数)
表头文件: #include<stdlibh>
定义函数 :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<stdlibh>
main()
{
int i,j;
for(i=0;i<10;i++)
{
j=1+(int)(100rand()/(RAND_MAX+10));
printf("%d ",j);
}
}
执行:
9 4 8 8 10 2 4 8 3 6
9 4 8 8 10 2 4 8 3 6 //再次执行仍然产生相同的随机数
公式=RAND()产生一个0~1之间的随机数,例子:
如果需要产生别的范围的数据,需要RAND()数量+起点,结果可以取整,例如:
它的返回值就是求取随机的值,所以如果没有对数有要求,直接这样定:
printf("%d", rand());就能输出一个随机数但如果对数有要求,如小数或在一定值以内:
小数:rand()+rand()/1000 //1000后面的0必须写,100是说明求两位小数,你可以自己加大
一定范围:rand()%10+0 //10是顶和底的差,0是底,就是说求10到20之间的数就是:rand()%10+10
但是调用它必须先调用srand()来生成随机种子,如果你没调用它,系统会自动调用但是srand是有个参数的,种子就是根据这个参数来定的,所以这个参数决定着生成的随机数如果你在代码里写死了它:srand(10);那这样rand生成的随机数就也被定格在了一定量,所以不要这样用要这样写:
srand(time(NULL));time的返回值是当前系统时间因为时间不同,所取的数值也就不同这样随机数就真正的随机了
time在中声明
rand,srand在中声明
srand((unsigned)time(NULL))则使用系统定时/计数器的值作为随机种子。每个种子对应一组根据算法预先生成的随机数,所以,在相同的平台环境下,不同时间产生的随机数会是不同的,相应的,若将srand(unsigned)time(NULL)改为srand(TP)(TP为任一常量),则无论何时运行、运行多少次得到的“随机数”都会是一组固定的序列,因此srand生成的随机数是伪随机数。
库函数中系统提供了两个函数用于产生随机数:srand()和rand()。 原型为:
函数一:int rand(void);
返回一个[0,RAND_MAX]间的随机整数。
函数二:void srand(unsigned seed);
参数seed是rand()的种子,用来初始化rand()的起始值。
但是,要注意的是所谓的“伪随机数”指的并不是假的随机数。其实绝对的随机数只是一种理想状态的随机数,计算机只能生成相对的随机数即伪随机数。计算机生 成的伪随机数既是随机的又是有规律的 —— 一部份遵守一定的规律,一部份则不遵守任何规律。比如“世上没有两片形状完全相同的树叶”,这体现到了事物的特性 —— 差异性;但是每种树的叶子都有近似的形状,这正是事物的共性 —— 规律性。从这个角度讲,我们就可以接受这样的事实了:计算机只能产生伪随机数而不是绝对的随机数。
C库里的rand应该是无参数的,返回一个0到RAND_MAX之间的正整数。
如果你要限制大小,只能用取余,比如
int n = rand() % 16,则返回一个0到15之间的随机数。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)