用C语言编写,使用51单片机生成0--9不重复数字。请问用什么做随机种子,如何产生不重复随机数

用C语言编写,使用51单片机生成0--9不重复数字。请问用什么做随机种子,如何产生不重复随机数,第1张

//正好我在做一个抽奖程序,有一段随机数去重代码,你可以借鉴一下。

//这种算法比较节省空间(至少我是这么觉得)

//用一个unsigned int型变量,记录已生成的随机数,代码如下

#include <reg51h>

#include<stdlibh>

unsigned int random = 0x00;

unsigned char nums[10] = {0};

void myrand()

{

    unsigned char temp,i;

    for(i=0;i<10,++i)

    {

        temp=rand();

        if((random>>temp)&0x01==0x00)

            nums[i]=temp;

    }

}

//你根据你的需求改吧,求采纳。

#include <stdioh>

#include <stdlibh>

#include <timeh>

int main(int argc, char argv[])

{

int i,number,s[100],count=0;

srand((unsigned)time(NULL));

for(i=0;i<100;i++)

{

s[i]=0;

}

while(1)

{

int c;

c=getche();

if(c=='q') //如果按键为q字符则退出

{

break;

}

while(1)

{

int find=0;

number=rand()%45+1;

for(i=0;i<count;i++)//查找是否已抽出过这个数

{

if(number==s[i])

{

find=1;

break;

}

}

if(find==0)//如果没抽出过该数则可打印输出

{

break;

}

}

printf("幸运同学的号码为: %d \n",number);

s[count++]=number;//抽出的数保存在数组中

}

return 0;

}

我写成了5个一行,从左到右,如果想要1个1行可以把代码第14行改为

printf("%d\n",prize);

#include <stdioh>

#include <stdlibh>

#include <timeh>

int main(void) {

int prize, a[51] = {0};

srand(time(NULL));

//j为当前生成成功的个数

for (int i = 0,j=0; i < 50000&&j<51; i++) {

 //prize为随机生成的1到50中的某个数

prize = rand() % 50 + 1;

//如果a[prize]!=0,说明这轮生成prize之前已经生成过了

//那么就继续循环,生成下一个数

if (a[prize])

continue;

 //如果这轮生成prize之前没有,那么统计个数j++

//并把a[prize]++,这样a[prize]就不会为0了

j++;

a[prize]++;

printf("%3d%c", prize,j%5==0'\n':' ');

}

return 0;

}

#include<stdioh>

#include<stdlibh>

#include<timeh>

#include<stringh>

typedef struct

{

char name[16],address[64];

}owner;

char company[8]={'\0'};

owner t;

int isexist(FILE f,owner ow)

{

fseek(f,0,SEEK_SET);

while(!feof(f))

{

if(2==fscanf(f,"%s %s",tname,taddress))

{

//下面的两个if可根据实际需要任选一个

//业主姓名、房产地址都相同,才认为业主信息已存在

if(!strcmp(tname,owname) && !strcmp(taddress,owaddress))

return 1;

//只要业主的房产地址相同,即认为业主信息已存在

/if(!strcmp(taddress,owaddress))

return 1;/

}

}

fseek(f,0,SEEK_END);

return 0;

}

void schedule(FILE f,owner ow)

{

company[0]='A'+rand()%6;

fprintf(f,"%s %s %s\n",owname,owaddress,company);

fflush(f);

printf("业主:姓名=%s,地址=%s,的房子已指派给%s公司评估。\n",owname,owaddress,company);

}

int main()

{

const char Exit[]="exit";

char fn1[]="file1txt",fn2[]="file2txt";

FILE f1=NULL,f2=NULL;

owner ow;

f1=fopen(fn1,"w+");

f2=fopen(fn2,"w");

srand(time(NULL));

while(1)

{

printf("请输入业主姓名、房产地址,输入%s退出:",Exit);

scanf("%s",owname);

if(!strcmp(Exit,owname))

break;

scanf("%s",owaddress);

if(isexist(f1,ow))

{

printf("此业主信息已经存在了,请重新输入。\n");

}

else

{

fprintf(f1,"%s %s\n",owname,owaddress);

fflush(f1);

schedule(f2,ow);

}

printf("\n");

}

fclose(f1);

fclose(f2);

return 0;

}

#include <bits/stdc++h>

using namespace std;

  int n,a[233];

  int main(){

   freopen("ain","r",stdin);

   freopen("aout","w",stdout);

   scanf("%d",&n);

   for (int i=0;i<n;i++) scanf("%d",&a[i]);

   printf("%d\n",a[rand()%n]);

  }

#include<stdioh>

void main()

{

int a[]={1,2,3,4,5,6,7};

int b[7],i,j,count=0,max=0,maxflag;

    for(i=0;i<7;i++)

scanf("%d",&b[i]);

    i=0;

while(i<7)

{

j=0;

count=0;

if(b[i]==a[j])

while(i<7 && j<7 && b[i]==a[j]) i++,j++,count++;

else

i++;

if(max<count)  {max =count;maxflag=i;}

}

count = max;

if(count==7) printf("特等奖\n");

else if(count==6)

{

if(maxflag==7)

printf("二等奖\n");

else

printf("一等奖\n");

}

else if(count==5)

{

if(maxflag==7)

printf("三等奖\n");

else

printf("二等奖\n");

}

else if(count==4)

{

if(maxflag==7)

printf("四等奖\n");

else

printf("三等奖\n");

}

else if(count==3)

{

if(maxflag==7)

printf("五等奖\n");

else

printf("四等奖\n");

}

else if(count==2 && maxflag!=7)

printf("五等奖\n");

else 

printf("没中奖\n");

}

以上就是关于用C语言编写,使用51单片机生成0--9不重复数字。请问用什么做随机种子,如何产生不重复随机数全部的内容,包括:用C语言编写,使用51单片机生成0--9不重复数字。请问用什么做随机种子,如何产生不重复随机数、关于c语言数字抽奖问题。我想按任何键可以重复抽奖,然后被抽中的会删除这个该怎么改急急急!!!、C语言,要求:能够循环的对某一范围(如1--50号)进行抽奖,而且不能重复等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/zz/10063890.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-05-04
下一篇2023-05-04

发表评论

登录后才能评论

评论列表(0条)

    保存