//江民2005数字SN算号器,针对12000-00000-251*5-5161**该号段
//m_sn 为类成员变量
void CKV2005SNDlg::OnButtonGen()
{
// TODO: Add your control notification handler code here
UINT SN1 = 12000; //SN第一段,下面依此类推
UINT SN2 = 4200;
UINT SN3 = 25105;
UINT SN4 = 51610;
UINT SN5 = 15700;
int RandNum[5]; //存储随机数的数组
int i = 0; //计数器,初始化为0
srand(rand()+time(NULL)); //用一个伪随机数和当前时间共同初始化随机数生成器
for(i = 0; i < 5; i++)
RandNum[i] = rand(); //生成5个随机数,供算号使用
m_sn.Format("%d-%d-%d-%d",SN1*100000 + SN2 + ((23094+RandNum[0])%23094)*4330 + (RandNum[1]%9+1),
SN3 + 10*(RandNum[2]%9 + 1),
SN4 + (RandNum[3]%9+1),
SN5 + (RandNum[4]%2)*20 + (RandNum[1]%9+1)
);
m_sn.Insert(5,"-");
UpdateData(FALSE);
}
/*
算法说明:SN总共有5段 12000-0420a-251b5-5161b-157ca
注:a,b,c代指数字
a(1-9)
b(1-9)
c(0 or 2)
算法总的来说是在该号段左数1,2(将1,2段看作一个大数:120000420a)段递增,递增值为4330,每经过一次递增,便可产生10个可用SN,具体方法是在递增的基础上再来一次小递增
小递增值为10,20,30,40,50,60,70,80,90这几个10的整倍数,每次大递增不可超过该段限制1299999999
此为网上所流传的数字SN算号器的算法原理,鄙视那些盗用箫心成果并且用于破坏的人!!!!
BY 农夫山泉有点甜
[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课