c 语言 随机数选取6个数 一定范围内
种子来源 定时器
/****************** 自动筛选种子 dat 目标种子 ************/ #define max 7 //随机生成最大的数为7 #define min 1 //随机生成最小的数为1 //查找相同的数据 u8 find_same_num(u8 *dat,u8 len,u8 dat_aim) { for(u8 i=0;i<(len+1);i++) { if(dat_aim==dat[i]) { return 1; } } return 0; } // void get_random(u8 *dat) { //种子 u8 new_seed=0; srand(end_device1.seed); u8 num = rand() % (max - min) + min; // “%”为模运算 if(num>=6) { num=6; } dat[0]=num; u8 gotos=0; for(u8 i=1;i<5;i++) { num = rand() % (max - min) + min; // “%”为模运算 while(find_same_num(dat,i,num)) { num = rand() % (max - min) + min; // “%”为模运算 if(num>=6) { num=6; } new_seed++; if(new_seed>=50) { new_seed=0;//运算超过100次 自动赋值 说明该随机种子无法产生需要的数值 for(u8 k=0;k<6;k++) { if(find_same_num(dat,i,k+1)==0) { num = k+1;// gotos=1; break; } } if(gotos==1) { gotos=0; break; } } } dat[i]=num; } //最后一次自动生成 for(u8 j=0;j<6;j++) { if(find_same_num(dat,6,j+1)==0) { dat[5] = j+1;// break; } } }