种子来源 定时器
/******************
自动筛选种子
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;
}
}
}