注册 登录
编程论坛 C语言论坛

调用rand()(对应文件头为“stdlib.h”)产生随机数

ynbstclyz 发布于 2020-03-15 16:35, 2959 次点击
随机产生车牌号:调用rand()(对应文件头为“stdlib.h”)产生随机数,设法产生“云A-3个数字2个大写字母”的车牌,如云A-016PA。在线等,谢谢了!!!
10 回复
#2
自学的数学2020-03-15 16:51
程序代码:
#include<stdio.h>
#include<stdlib.h>
#include<time.h>
int main()
{
  srand((unsigned int)time(NULL));
  int num[5]={0};
  int i,j=1;
  while(j<=20)
    {
       for(i=0;i<5;i++)
         {
           if(i<3)
              num[i]=rand()%9+0;
            else
              {
               do
                {
                  num[i]=rand()%26+65;
                }
                 while(num[i]=='I'||num[i]=='O');
              }
         }
         printf("云A-%d%d%d%c%c\t",num[0],num[1],num[2],num[3],num[4]);
         if(j%4==0)
            printf("\n");
     j++;
   }
   return 0;
}
#3
ynbstclyz2020-03-15 16:52
回复 2楼 自学的数学
感谢感谢!!!
#4
ynbstclyz2020-03-15 17:03
回复 2楼 自学的数学
显示25个错误,请问是怎么回事?
#5
ynbstclyz2020-03-15 17:13
回复 4楼 ynbstclyz
32个错误 A 0个警告 0 0个消息

说明

1语法错误;缺少","(在类型的前面)

2语法错误:缺少","(在”类型"的前面)

3 "j":未声明的标识符

4 "1":未声明的标识符

5 "i":未声明的标识符

6 "i": 未声明的标识符

7 "i": 未声明的标识符

 8 "num":未声明的标识符

9 "i": 未声明的标识符

10下标要求数组或指针类型

11 "num":未声明的标识符

)12 "i":末声明的标识符

13下标要求数组或指针类型得冒情高着贵王
14 "num":未声明的标识符

15 "i":未声明的标识符

 16下标要求数组或指针类型

 17”num”:未声明的标识符
18 "i":未声明的标识符

 19下标要求数组或指针类型

20 "num":未声明的标识符

21下标要求数组或指针类型

22 "num":未声明的标识符

23下标要求数组或指针类型

24 "num":未声明的标识符

25下标要求数组或指针类型

 26 "num":未声明的标识符

27下标要求数组或指针类型

28 "num":未声明的标识符

29下标要求数组或指针类型

30 "j":未声明的标识符

31 "j":未声明的标识符

32 Build errors occurred.
#6
叶纤2020-03-15 18:51
程序代码:



#include<time.h>
#include<stdlib.h>
#include<stdio.h>
int getrand(int min,int max)
{  static const double tem=1.0/(RAND_MAX+1.0);


 return min+(int)(max-min+1)*rand()*tem;

}
int main()
{
    srand((unsigned int)time(NULL));int b[2];
     int a[4];
    for(int i=0;i<4;++i)
    {   a[i]=getrand(0,9);

    }

    for(int i=0;i<2;++i){b[i]=(char)getrand(65,90);}

      printf("云A-%d%d%d%c%c  ",a[1],a[2],a[3],b[0],b[1]);
}
云A-250XI


[此贴子已经被作者于2020-3-16 01:33编辑过]

#7
纯蓝之刃2020-03-15 20:08
程序代码:
#include<stdio.h>
#include<stdlib.h>
#include<time.h>
int main()
{
    srand((unsigned int)time(NULL));
    int num[5]={0},num2[5];
    int flag,temp[5]={-1,-1,-1,-1,-1};  //这个地方很有意思,我如果初始化temp={-1},得到的是{-1,0,0,0,0}而不是{-1,-1,-1,-1,-1},不知道为什么
    int i,j=1;

    //按照规则得到五个数据
    for(i=0; i<3; i++)
        num[i]=rand()%9+'0';
    for(i=3; i<5; i++)
        num[i]=rand()%26+'A';

    //每点得到num中五个数字的概率都是一样的。
    for(i=0;i<5;i++)
    {
        flag=rand()%(5-i);
        for(j=0;j<=flag;j++)
        {
            if(temp[j]!=-1)
                flag++;
        }
        temp[flag]=i;
    }

    //按照得到的次序重新排列num数组
    for(i=0;i<5;i++)
        num2[i]=num[temp[i]];

    printf("云A-%c%c%c%c%c\n",num2[0],num2[1],num2[2],num2[3],num2[4]);

    return 0;
}

temp[5]={-1,-1,-1,-1,-1};  //这个地方很有意思,我如果初始化temp={-1},得到的是{-1,0,0,0,0}而不是{-1,-1,-1,-1,-1},不知道为什么
#8
forever742020-03-15 22:00
以下是引用纯蓝之刃在2020-3-15 20:08:57的发言:


temp[5]={-1,-1,-1,-1,-1};  //这个地方很有意思,我如果初始化temp={-1},得到的是{-1,0,0,0,0}而不是{-1,-1,-1,-1,-1},不知道为什么


初始化缺少的数据全部自动填0这几乎是被我当作公理的了第一次听说为什么
#9
纯蓝之刃2020-03-15 22:35
回复 8楼 forever74
我一直认为数组初始化,只填一个数据时,会将所有的数据都置成这个数呢。一般初始化都填{0},而结构体数组初始化的时候一般都用memset,就没注意到过这个问题。
#10
lin51616782020-03-15 23:15
回复 6楼 叶纤
注意 3个数字可以是0开头
你的随机数最小100 不会出现0开头
不满足要求
#11
叶纤2020-03-15 23:41
回复 10楼 lin5161678
呀,谢谢提醒,我只看到三个数字了。没考虑那么清楚,我昨天才刚学随机数今天实战了一回,有点不熟悉,一会儿改改
1