找回密码
 点一下
楼主: 151373880

关于快速列举的算法? 各位大大帮帮忙。。。。

[复制链接]
发表于 2008-6-14 17:17:29 | 显示全部楼层
随便写个~~
  1. unsigned int rand(unsigned int max)
  2. {
  3.     unsigned int i=0,j;
  4.     if (max<RAND_MAX)
  5.     {
  6.         j = RAND_MAX / (++max) * max;
  7.         for(i=rand(); i>=j; i=rand())
  8.             ;
  9.         return i % max;
  10.     }
  11.     else
  12.     {
  13.         j = max/RAND_MAX;
  14.         for(i=rand()*(j+1)+rand(j); i>max; i=rand()*(j+1)+rand(j))
  15.             ;
  16.         return i;
  17.     }
  18. }
  19. char* GetSXNum(char* outStr)
  20. {
  21.     static char ranStr1[11] = "0123456789";
  22.     char ranStr2[10] = "8RT2j67dK";
  23.     srand(GetCurrentTime());
  24.     char i=0,j=9,k;
  25.     for(;i<4;i++)
  26.     {
  27.         k=rand(--j);
  28.         outStr[i]=ranStr2[k];
  29.         ranStr2[k]=ranStr2[j];
  30.     }
  31.     for(;i<8;i++)
  32.         outStr[i]=ranStr1[rand(9)];
  33.     for(;i<12;i++)
  34.     {
  35.         k=rand(--j);
  36.         outStr[i]=ranStr2[k];
  37.         ranStr2[k]=ranStr2[j];
  38.     }
  39.     return outStr;
  40. }
复制代码
回复

使用道具 举报

 楼主| 发表于 2008-6-14 18:57:00 | 显示全部楼层
感谢老狼了。。。昨天已经把问题解决了。。。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 点一下

本版积分规则

Archiver|移动端|小黑屋|地精研究院

GMT+8, 2024-12-26 08:44 , Processed in 0.117064 second(s), 17 queries .

Powered by Discuz! X3.5

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表