| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 5918 人关注过本帖
标题:keil c 用rand() 生成6位随机数
只看楼主 加入收藏
i_longyue
Rank: 1
等 级:新手上路
帖 子:16
专家分:0
注 册:2016-7-14
结帖率:50%
收藏
已结贴  问题点数:20 回复次数:8 
keil c 用rand() 生成6位随机数
keil c 用rand()  生成6位随机数
2016-07-14 13:41
grmmylbs
Rank: 14Rank: 14Rank: 14Rank: 14
等 级:贵宾
威 望:54
帖 子:1409
专家分:5845
注 册:2016-2-14
收藏
得分:20 
每次生成1位数,然后凑成6位,首位不为0
2016-07-14 14:15
i_longyue
Rank: 1
等 级:新手上路
帖 子:16
专家分:0
注 册:2016-7-14
收藏
得分:0 
回复 2楼 grmmylbs
可以详细点吗?我是看到这例子  想做用按键实现 4位 或6们的 密码产生器
//实例37:标准函数stdlib.h应用举例
#include<reg51.h>   //包含51单片机寄存器定义的头文件
#include<stdlib.h>   //包含函数rand()声明的头文件
/*************************************************
函数功能:延时约150ms
*************************************************/
voiddelay(void)
{
  unsigned char m,n;
  for(m=0;m<200;m++)
    for(n=0;n<250;n++)
              ;
}
/*************************************************
函数功能:主函数
*************************************************/
voidmain(void)
{
  unsigned char i;
  while(1)
   {
        for(i=0;i<10;i++) //产生10个随机数
          {
                 P3=rand()/160; //将产生的随机数缩小160倍后送P3显示
                     delay();
               }
        }
}
2016-07-14 14:22
grmmylbs
Rank: 14Rank: 14Rank: 14Rank: 14
等 级:贵宾
威 望:54
帖 子:1409
专家分:5845
注 册:2016-2-14
收藏
得分:0 
你的问题是什么?
rand()%10就是生成1位数了,像例子里连续调6次就行。如果只是生成密码就不用关注首位非0的了。
2016-07-14 14:28
i_longyue
Rank: 1
等 级:新手上路
帖 子:16
专家分:0
注 册:2016-7-14
收藏
得分:0 
回复 4楼 grmmylbs
1,我想知道有没有方法直接生成6位随机数
2,如果是走6边  下面这样可以吗(不考虑随机数是0)手上没开发板。谢谢
#include<reg51.h>   //包含51单片机寄存器定义的头文件
#include<stdlib.h>   //包含函数rand()声明的头文件
/*************************************************
函数功能:延时约150ms
*************************************************/
void delay(void)
{
  unsigned char m,n;
  for(m=0;m<200;m++)
    for(n=0;n<250;n++)
              ;
}
/*************************************************
函数功能:主函数
*************************************************/
int fun(void)
{
  int c;
  unsigned char i;
  while(1)
   {
        for(i=0;i<10;i++) //产生10个随机数
          {
                c=(rand()/10)*k; //将产生的随机数缩小160倍后送P3显示
                 delay();
                 k=k*10;
                 if(k=100000)k=1;
               }
        }return c;
}
void main()
{
    int j, number=0,k=1;
    for(j=1;j<7;j++)
    {
    number=number+fun();
    }

}
2016-07-14 14:56
grmmylbs
Rank: 14Rank: 14Rank: 14Rank: 14
等 级:贵宾
威 望:54
帖 子:1409
专家分:5845
注 册:2016-2-14
收藏
得分:0 
我猜你是想这样做:

程序代码:
int k = 1;
int fun(void)
{
    int c;
    unsigned char i;
    
    //while (1)
    {
        //for (i = 0; i<10; i++) //产生10个随机数
        {
            c = (rand() % 10)*k; //将产生的随机数缩小160倍后送P3显示
            //delay();
            k = k * 10;
            if (k == 100000)k = 1;
        }
    }return c;
}
2016-07-14 15:04
i_longyue
Rank: 1
等 级:新手上路
帖 子:16
专家分:0
注 册:2016-7-14
收藏
得分:0 
回复 6楼 grmmylbs
就是循环6次 我的程序错了是模 和==  我明天用板子试试看看可不可以
2016-07-14 15:20
grmmylbs
Rank: 14Rank: 14Rank: 14Rank: 14
等 级:贵宾
威 望:54
帖 子:1409
专家分:5845
注 册:2016-2-14
收藏
得分:0 
你这样计算成一个6位数,还是要考虑首位的吧。
2016-07-14 15:22
i_longyue
Rank: 1
等 级:新手上路
帖 子:16
专家分:0
注 册:2016-7-14
收藏
得分:0 
是的 边试边改
2016-07-14 15:46
快速回复:keil c 用rand() 生成6位随机数
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.017785 second(s), 9 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved