在很多时候需要按照一定的格式生成一定数量的随机数,下面是实现方法
下面是自己写的类
public class MyRandom { private string _strin; private string _strout; private Random _rnd;
public MyRandom(string strin) { _rnd=new Random(System.Environment.TickCount);//确保每次使用得到不同的随机数,System.Environment.TickCount表示系统启动以来的毫秒数 _strin=strin; }
private string GetOneRandomNum(string strformat) { string strtemp; switch(strformat) { case "*": { int itmp=_rnd.Next(36); if(itmp<10) strtemp=_rnd.Next(10).ToString(); else strtemp=Convert.ToChar(_rnd.Next(26)+'A').ToString(); break; } case "#": { strtemp=_rnd.Next(10).ToString(); break; } case "$": { strtemp=Convert.ToChar(_rnd.Next(26)+'A').ToString(); break; } default: { strtemp=strformat; break; } } return strtemp; }
public string GetRandomNum() { _strout=String.Empty; for(int i=0;i<_strin.Length;i++) { _strout+=this.GetOneRandomNum(_strin[i].ToString()); } return _strout; } }
下面是这个类在控制台下的使用 Console.WriteLine("全是数字的随机数"); MyRandom rnd1=new MyRandom("####-####-####-####"); for(int i=0;i<10;i++)Console.WriteLine(rnd1.GetRandomNum()); Console.WriteLine("全是大写字母的随机数"); MyRandom rnd2=new MyRandom("$$$$-$$$$-$$$$-$$$$"); for(int i=0;i<10;i++)Console.WriteLine(rnd2.GetRandomNum()); Console.WriteLine("大写字母和数字混合随机数"); MyRandom rnd3=new MyRandom("****-****-****-****"); for(int i=0;i<10;i++)Console.WriteLine(rnd3.GetRandomNum()); Console.WriteLine("前4位为1234后面分别是4位数字4位字母4位混合的随机数,没有分隔符"); MyRandom rnd4=new MyRandom("1234####$$$$****"); for(int i=0;i<10;i++)Console.WriteLine(rnd4.GetRandomNum()); Console.ReadLine();
输出的结果是
全是数字的随机数 9162-4581-4990-0207 1783-0140-3387-3646 6080-4696-2719-0319 2333-1887-7581-7088 5239-3034-7103-0400 1859-3158-1128-8891 8337-9252-0859-7572 4798-5843-7571-7459 1846-0319-3294-5506 4941-8060-9004-4445 全是大写字母的随机数 XEQF-MOWD-MYYA-AFAS CTVI-BEKC-JIVU-HRLR RBXA-KSYR-HSEX-AHEX GIII-DVWS-TNVD-TCVV NHJY-IAHK-UDBI-AMBB EXNZ-JCOV-EEGW-WVYE XJKT-YFPG-AXOZ-UOSG LTZW-OVLK-SNUE-TLOZ FWLQ-CIDY-IHZM-OOBQ LZKC-VCQB-YAAL-LKMP 大写字母和数字混合随机数 WQO1-WN57-R516-PROW 4SPU-DSKE-L5C1-DCJX VO52-MAK5-3HU0-INQF L6B3-YG0J-D5DS-K7NJ TJ6Z-OM8I-PUFP-NPJW GJA2-C80V-WZNL-7RZ9 AZMY-J4WX-00T1-DBNP 325A-WNIE-OPBB-7E4W QQDN-AR5C-FAYY-Z4IV SRWF-C9TN-LXIV-MUHF 前4位为1234后面分别是4位数字4位字母4位混合的随机数,没有分隔符 12342886ROADWN57 12348625EDCRPROW 12341446RPSUDSKE 
|