srand((unsigned)time(NULL))则使用系统定时/计数器的值作为随机种子。每个种子对应一组根据算法预先生成的随机数,所以,在相同的平台环境下,不同时间产生的随机数会是不同的,相应的,若将srand(unsigned)time(NULL)改为srand(TP)(TP为任一常量),则无论何时运行、运行多少次得到的“随机数”都会是一组固定的序列,因此srand生成的随机数是伪随机数。[1]
库函数中系统提供了两个函数用于产生随机数:srand()和rand()。 原型为:
函数一:int rand(void);
返回一个[0,RAND_MAX]间的随机整数。
函数二:void srand(unsigned seed);
参数seed是rand()的种子,用来初始化rand()的起始值。
但是,要注意的是所谓的“伪随机数”指的并不是假的随机数。其实绝对的随机数只是一种理想状态的随机数,计算机只能生成相对的随机数即伪随机数。计算机生 成的伪随机数既是随机的又是有规律的 —— 一部份遵守一定的规律,一部份则不遵守任何规律。比如“世上没有两片形状完全相同的树叶”,这体现到了事物的特性 —— 差异性;但是每种树的叶子都有近似的形状,这正是事物的共性 —— 规律性。从这个角度讲,我们就可以接受这样的事实了:计算机只能产生伪随机数而不是绝对的随机数。
系统在调用rand()之前都会自动调用srand(),如果用户在rand()之前曾调用过srand()给参数seed指定了一个值,那么 rand()就会将seed的值作为产生伪随机数的初始值;而如果用户在rand()前没有调用过srand(),那么系统默认将1作为伪随机数的初始 值。如果给了一个定值,那么每次rand()产生的随机数序列都是一样的~~
所以为了避免上述情况的发生我们通常用srand((unsigned)time(0))或者srand((unsigned)time(NULL))来 产生种子。如果仍然觉得时间间隔太小,可以在(unsigned)time(0)或者(unsigned)time(NULL)后面乘上某个合适的整数。 例如,srand((unsigned)time(NULL)10)
另外,关于time_t time(0):time_t被定义为长整型,它返回从1970年1月1日零时零分零秒到目前为止所经过的时间,单位为秒。
srand()、rand()用法举例:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#include<timeh>
#include<stdlibh>
#include<stdioh>
voidmain()
{
inti,j;
srand((int)time(0));
for(i=0;i<10;i++)
{
j=1+(int)(100rand()/(RAND_MAX+10));
printf("%d",j);
}
}
首先我们需要在电脑上安装Keil软件,安装好后双击它的快捷方式打开这个软件!
打开软件后,会出现这个页面,这时候就需要我们点击窗口上面的project,然后点击New uvision project新建一个工程文件,在里面需要我们选择芯片,51单片机我们是选择的Atmel里面的AT89c51,这个是很好找的!
选择好芯片后,我们需要保存文件,接着就是写程序了,我们新建一个空白文档,这个是点File下面那个按钮。
在Text中编写自己的程序,我们需要把51单片机的头文件添加上去,这个是#include<reg51h>,写好之后把它保存再添加到工程里,这里需要我们注意,是点project的source group里面的Add Files to…… 这样才不会出错!
接下来检查程序有无问题,如果没有问题,我们可以编译,链接,调试了,这个需要我们生成Hex文件,这样才能放到protues软件中仿真,也可以不用生成Hex文件,而是生成bin文件下载到开发板中
如果程序在编译过程中出现问题,这就说明我们的程序有问题,我们可以去点它的错误提示找到错误语句的位置,然后再去修改,还有我们需要注意程序编译通过,有时候在单片机上运行也不能实现我们希望的结果,所以在编写的过程中我们要认真!
子函数要在主函数下使用,就要在主函数前声名
如:
void delay();
mian()
{
delay(10);//延时10豪秒
}
void delay(uint z)//12MHZ
{
uint x,y;
for(x=z;x>0;x--)
for(y=20;y>0;y--);
}
延时子程序
程序的书写没有任何错误,错在语法上了!
位 *** 作C51特有的,直接在程序中书写“P2^7=0;”是会出错的,必须在程序的前边声明位变量 sbit P27=P2^7;(用P27(符号别名)代替P2^7(真实名),后边必须加分号!)
改写后的程序如下,已经编译通过!
#include<REG51h>
sbit P10=P1^0;
sbit P11=P1^1;
sbit P23=P2^3;
sbit P26=P2^6;
void main()
{
while(1)
{
P0=0xff;
P10=0;
P11=1;
P23=0;
P26=1;
}
}
祝你成功!
以上就是关于Rand函数和srand函数在keil中怎么用,能给我举个例子吗全部的内容,包括:Rand函数和srand函数在keil中怎么用,能给我举个例子吗、keil怎样运行程序、keil 4 中调用子文件的数据在主函数中怎么声明和定义最好弄飞简单的例子!等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)