当前位置: 首页 > wzjs >正文

百度做网站要多久五金外贸网站模板

百度做网站要多久,五金外贸网站模板,audio player wordpress 使用方法,长沙网站建设专家rand()和srand()函数原型: int rand(void) 返回一个范围在 0 到 RAND_MAX 之间的伪随机数。 void srand(unsigned int seed)用来给rand() 设置随机数发生器,随机数发生器输出不同的数值,rand() 就会生成不同的随机数 1)、在“D:\Keil_v5\AR…

rand()和srand()函数原型:

int rand(void) 返回一个范围在 0 到 RAND_MAX 之间的伪随机数。

void srand(unsigned int seed)用来给rand() 设置随机数发生器,随机数发生器输出不同的数值,rand() 就会生成不同的随机数

1)、在“D:\Keil_v5\ARM\ARMCC\include\stdlib.h”中,有下面的定义:

#ifdef __USE_ANSI_EXAMPLE_RAND

#define srand _ANSI_srand

#define rand _ANSI_rand

#define RAND_MAX 0x7fff

#else

#define RAND_MAX 0x7fffffff  /*MDK-ARM默认使用RAND_MAX0x7fffffff*/

#endif

MDK-ARM默认使用RAND_MAX0x7fffffff

2)、在“D:\Keil_v5\ARM\ARMCC\include\time.h”中,有下面的定义:

extern _ARMABI time_t time(time_t * /*timer*/);

但是time没有具体的函数,因此“srand((unsigned int)time(NULL))”就不能用了。

srand()函数用生成随机数种子。当我们使用相同的种子时,将生成相同的随机数序列。为了能rand()函数生成不同的随机数,可以使用“TIM1的计数器值”作为作为种子值因为“TIM1的计数器值”是不断变化的,这样每次运行rand()函数,就可以生成不同的随机数序列。

3)、测试rand()和srand()函数

void TIM1_Interrupt_Initializtion(u16 arr,u16 psc);//函数声明

//定时器1中断初始化

//APB2时钟为72MHz

//arr:自动重装值。

//psc:时钟预分频数

//TIM_CKD_DIV1:定时器时钟 = 输入频率

//TIM_CKD_DIV2:定时器时钟 = 输入频率/2

//TIM_CKD_DIV4:定时器时钟 = 输入频率/4

//TIM1溢出时间: arr*psc/72000000/TIM_CKD_DIVx

//TIM1_Interrupt_Initializtion(1000,72);

//当arr=1000,psc=72时,则为1ms,误差为1us;

void TIM1_Interrupt_Initializtion(u16 arr,u16 psc)

{

TIM_TimeBaseInitTypeDef  TIM_TimeBaseStructure;

NVIC_InitTypeDef NVIC_InitStructure;

RCC_APB2PeriphClockCmd(RCC_APB2Periph_TIM1, ENABLE);

//使能定时器TIM1的APB2外设时钟

//定时器TIM1初始化

TIM_TimeBaseStructure.TIM_Period = arr-1;

//设置在下一个更新事件装入活动的自动重装载寄存器周期的值

TIM_TimeBaseStructure.TIM_Prescaler =psc-1;

//设置用来作为TIMx时钟频率除数的预分频值

TIM_TimeBaseStructure.TIM_ClockDivision = TIM_CKD_DIV1;

//设置时钟分割:TDTS = Tck_tim

//计算公式:arr*psc/72000000/1,当arr=1000,psc=72时,则为1ms,误差为1us;

TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up;

//TIM向上计数模式

TIM_TimeBaseInit(TIM1, &TIM_TimeBaseStructure);

//根据指定的参数初始化TIMx的时间基数单位

  TIM_SetCounter(TIM1,0);                      //设置TIM1的计数器值为0;

  TIM_ClearFlag(TIM1, TIM_FLAG_Update);        //清除TIM1溢出的待处理标志位

TIM_ClearITPendingBit(TIM1, TIM_IT_Update ); //清除TIM1中断的待处理位

// TIM_ITConfig(TIM1,TIM_IT_Update,ENABLE ); //允许TIM1溢出产生中断

/*中断优先级NVIC设置

NVIC_PriorityGroup_4设置NVIC中断分组4:表示抢占优先级为4位,取值为0~15,没有响应优先级,取值为0

NVIC_PriorityGroup_3设置NVIC中断分组3:表示抢占优先级为3位,取值为0~7,响应优先级只有1位,取值为0~1

NVIC_PriorityGroup_2设置NVIC中断分组3:表示抢占优先级为2位,取值为0~3,响应优先级只有2位,取值为0~3

NVIC_PriorityGroupConfig(NVIC_PriorityGroup_4);//设置系统中断优先级分组4

NVIC_InitStructure.NVIC_IRQChannel = TIM1_UP_IRQn;  //TIM1中断

NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 11;  //设置抢占优先级为11

NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0;  //设置响应优先级为0

NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;     //IRQ通道被使能

NVIC_Init(&NVIC_InitStructure); //根据NVIC_InitStruct中指定的参数初始化NVIC嵌套向量中断控制寄存器

*/

TIM_Cmd(TIM1, ENABLE);//使能TIM1外设

}

#include "stdlib.h"

//rand()和srand()需要包含stdlib.h头文件

void Test_rand_And_srand(void)

{

unsigned int rand_Value;//声明无符号32位变量rand_Value

unsigned int ms;//声明无符号32位变量ms

srand( TIM_GetCounter(TIM1) );//使用“TIM1的计数器值”作为作为种子值

rand_Value=rand(); //返回一个范围在0到RAND_MAX之间的伪随机数

ms=rand_Value%1000+1;//ms为1到1000之间的数

printf("ms=%u\r\n",ms);

}

int main(void)

{

NVIC_PriorityGroupConfig(NVIC_PriorityGroup_4);//设置系统中断优先级分组4

USART1_Serial_Interface_Enable(115200);

printf("\r\nCPU reset\r\n");

    TIM1_Interrupt_Initializtion(1000,72);

//当arr=1000,psc=72时,则为1ms,误差为1us;

  while(1)

  {

Test_rand_And_srand();

  }

}

仿真结果:

注意:如果不初始化T1M1,rand()就会生成相同的随机数,这个不是我们想要的结果。测试如下:

因此,要使用srand()设置种子值,即将“种子值”作为rand()信号源,输入变化,输出也会跟着变化,这个输出值就是随机数。

3)、在MDK-ARM中,不用srand()设置随机数发生器,也可以使用rand()得到不同的随机数。

#include "stm32f10x.h" //使能uint8_t,uint16_t,uint32_t,uint64_t,int8_t,int16_t,int32_t,int64_t
#include "stdio.h"  //getchar(),putchar(),scanf(),printf(),puts(),gets(),sprintf()
#include "USART1.h"
//注意:"USART1.h"要放在 "stdio.h" 包含文件之后,如果这个位置颠倒了,业不能打印浮点数。#include "stdlib.h"
//rand()需要包含stdlib.h头文件void Test_Rand(void)
{unsigned int rand_Value;//声明无符号32位变量rand_Valueunsigned int ms;//声明无符号32位变量msrand_Value=rand(); //返回一个范围在0到RAND_MAX之间的伪随机数printf("rand_Value=%u\r\n",rand_Value);ms=rand_Value%1000+1;//ms为1到1000之间的数printf("ms=%u\r\n",ms);
}int main(void){NVIC_PriorityGroupConfig(NVIC_PriorityGroup_4);//设置系统中断优先级分组4USART1_Serial_Interface_Enable(115200);printf("\r\nCPU reset\r\n");while(1){Test_Rand();}
}

 仿真结果如下:

4)、如果在调用rand()前,每次都使用srand()设置一个常数作为种子,就会得到相同的随机数。

#include "stm32f10x.h" //使能uint8_t,uint16_t,uint32_t,uint64_t,int8_t,int16_t,int32_t,int64_t
#include "stdio.h"  //getchar(),putchar(),scanf(),printf(),puts(),gets(),sprintf()
#include "USART1.h"
//注意:"USART1.h"要放在 "stdio.h" 包含文件之后,如果这个位置颠倒了,业不能打印浮点数。#include "stdlib.h"
//rand()需要包含stdlib.h头文件void Test_Rand(void)
{unsigned int rand_Value;//声明无符号32位变量rand_Valueunsigned int ms;//声明无符号32位变量mssrand(1);rand_Value=rand(); //返回一个范围在0到RAND_MAX之间的伪随机数printf("rand_Value=%u\r\n",rand_Value);ms=rand_Value%1000+1;//ms为1到1000之间的数printf("ms=%u\r\n",ms);
}int main(void){NVIC_PriorityGroupConfig(NVIC_PriorityGroup_4);//设置系统中断优先级分组4USART1_Serial_Interface_Enable(115200);printf("\r\nCPU reset\r\n");while(1){Test_Rand();}
}

仿真结果:

5)、 如果在调用rand()前,只用一次srand()设置一个常数作为种子,可以得到不同的随机数。

#include "stm32f10x.h" //使能uint8_t,uint16_t,uint32_t,uint64_t,int8_t,int16_t,int32_t,int64_t
#include "stdio.h"  //getchar(),putchar(),scanf(),printf(),puts(),gets(),sprintf()
#include "USART1.h"
//注意:"USART1.h"要放在 "stdio.h" 包含文件之后,如果这个位置颠倒了,业不能打印浮点数。#include "stdlib.h"
//rand()需要包含stdlib.h头文件void Test_Rand(void)
{unsigned int rand_Value;//声明无符号32位变量rand_Valueunsigned int ms;//声明无符号32位变量msrand_Value=rand(); //返回一个范围在0到RAND_MAX之间的伪随机数printf("rand_Value=%u\r\n",rand_Value);ms=rand_Value%1000+1;//ms为1到1000之间的数printf("ms=%u\r\n",ms);
}int main(void){NVIC_PriorityGroupConfig(NVIC_PriorityGroup_4);//设置系统中断优先级分组4USART1_Serial_Interface_Enable(115200);printf("\r\nCPU reset\r\n");srand(1);while(1){Test_Rand();}
}

仿真结果:

为什么在keil中,会出现这种结果?我也想知道。 


文章转载自:

http://7dtQ0N5G.hmxrs.cn
http://y3VxzSho.hmxrs.cn
http://LDES4yHA.hmxrs.cn
http://Ig2Gkfdo.hmxrs.cn
http://6tg5RvwA.hmxrs.cn
http://dShgCl4q.hmxrs.cn
http://AQYzNxVX.hmxrs.cn
http://AfJAtf9U.hmxrs.cn
http://m5vuyPxq.hmxrs.cn
http://vmzxVrEe.hmxrs.cn
http://JEmz444u.hmxrs.cn
http://4cFwG455.hmxrs.cn
http://L8ALCE81.hmxrs.cn
http://80cAYLrO.hmxrs.cn
http://PkXvx3H0.hmxrs.cn
http://fAxZ8NDA.hmxrs.cn
http://jzmDH9oE.hmxrs.cn
http://ZmHaVGSB.hmxrs.cn
http://whb9cOOg.hmxrs.cn
http://V85dNAMd.hmxrs.cn
http://2XYiOamL.hmxrs.cn
http://d4q20Q5w.hmxrs.cn
http://fudTdVV4.hmxrs.cn
http://P2Rj5VFl.hmxrs.cn
http://kWHocBKH.hmxrs.cn
http://30mzMbxJ.hmxrs.cn
http://RJAicZIN.hmxrs.cn
http://ubWIIosI.hmxrs.cn
http://04yCTTSe.hmxrs.cn
http://btGqsxdm.hmxrs.cn
http://www.dtcms.com/wzjs/727483.html

相关文章:

  • dede网站logo怎么改深圳市企业网站seo
  • 青州网站建设公司网站年费如何做会计分录
  • 网站建设与维护试卷及答案天津塘沽爆炸电影
  • php和什么语言做网站优化网址
  • 网上做中考题的网站绿色风格网站
  • 怎么做装修网站平台电子商务专升本可以报什么专业
  • 绿盒子网站建设案例此博客由wordpress制作
  • 郑州网站推广公司咨询网站开发语言有哪些
  • 优秀材料写作网站重庆网站建设服务公司
  • 网站建设工作是干什么的搜索企业的软件哪个好
  • 个人网站做淘宝客教程做足球预测的网站
  • 常州网站设计公司工商营业执照网上注册
  • 网站建设代理哪个好舆情系统
  • 个人网站制作 教程phpcms v9 网站建设入门
  • 提供网站建设收费标准wordpress th7好卡
  • 营销型网站成功案例wordpress可以添加字段吗
  • wordpress安装如何填数据库东莞seo排名外包
  • 网站后台不显示文章内容网站备案证图片
  • dede 手机站 怎么获取跳转网站程序员接单网站
  • 漫画网站开发说明怎样创建一个app
  • 专业网站建设公司哪家专业热门课程自己做网站
  • 澄迈网站制作自学建筑app
  • 水资源监控能力建设门户网站国外好的室内设计网站
  • 网站描述多个词怎么分隔盘锦网站建设公司
  • 口碑好的福州网站建设青岛seo招聘
  • 比较实用的h5网页建设网站图片文章wordpress
  • CQ网络科技网站建设关于医院建设网站的请示
  • 四站合一网站建设网站建设培训方案
  • 网站开发记入什么会计科目餐饮企业网站设计
  • ip分享网站网站怎么建设dw