打印
[其他ST产品]

关于keil使用随机数

[复制链接]
405|2
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
在水一方00|  楼主 | 2023-12-20 15:54 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本人的方法
应为keli不能使用time.h,无法用时间戳来随机一个数据,我个人觉得300个随机数已经够用了,这个生成随机数的关键就在于srand(x);这个函数,如何x数相同,那么就算你后面使用到rand() 函数也无济于事,你会发现生成的数都是相同的。

对我个人来说,我做这个项目只需要300个随机数就足够了写法为(写法过于片面):

这是生成的随机数范围定义


int a=m+rand()%(n-m+1);#include <stdio.h>
#include <stdlib.h>

int b;

/**
  * @brief  生成随机数据
  * @param  None
  * @retval int a=m+rand()%(n-m+1);
  */
int RandNum(void){
        int a;
        printf("随机产生1个[50,150)范围内随机数:\n\n");
        srand(b);   //用时间作种子
        b++;
        if(b>300)
                b=0;
        //srand(time(0));
        a = 50+rand()%100;
        printf("随机数为:%d",a);
        return a;
          
}       

使用特权

评论回复
沙发
在水一方00|  楼主 | 2023-12-20 15:55 | 只看该作者
他人写法
/* 产生一个300左右的有符号随机数 */
int16_t get_ad(void)
{
        int16_t RandomNum;              //随机数            
        uint16_t i,RemainderNum;        //余数
        RemainderNum = 1+(int16_t)(10.0*rand()/(RAND_MAX + 1.0));//产生一个10以内的随机数
        RandomNum = 0x127 + RemainderNum;
        printf(", RandomNum = ");       //波形显示用
        printf("%d",RandomNum);
        return RandomNum;
}

使用特权

评论回复
板凳
在水一方00|  楼主 | 2023-12-20 15:55 | 只看该作者
他人写法
/* 产生一个300左右的有符号随机数 */
int16_t get_ad(void)
{
        int16_t RandomNum;              //随机数            
        uint16_t i,RemainderNum;        //余数
        RemainderNum = 1+(int16_t)(10.0*rand()/(RAND_MAX + 1.0));//产生一个10以内的随机数
        RandomNum = 0x127 + RemainderNum;
        printf(", RandomNum = ");       //波形显示用
        printf("%d",RandomNum);
        return RandomNum;
}

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

50

主题

566

帖子

0

粉丝