如题
比方说,生成13位的数字
1245879654881
1254895566545
。
这些数字永不重复,或者在一定时间内不重复,如1个月
比方说,生成13位的数字
1245879654881
1254895566545
。
这些数字永不重复,或者在一定时间内不重复,如1个月
解决方案 »
- js读取远程rss
- 那位兄弟有信息采集的程序啊,发给我一份,100分
- JS打印问题
- 使用asp.net中的html控件<input type="file">选择一个文件后,点击send按钮操作后,该控件中的文件地址就被清空,要怎么保留地址啊
- 欲花两千现大洋求asp.net现成源码
- gridview 列排序只取前几位排序,请大牛解决一下
- 新建一个Windows服务项目,怎样让他每隔一段时间运行一次
- 没分了,简单问题请大侠们行行好!
- 谁能给一个ComponentArt中DataGrid绑定SQl Server数据库的例子呀
- 关于Application中设置一个变量,在页面中调用?
- 谁有数据库操作的图标,如增加,删除,更新,搜索等常用图标。
- 一个强壮的问题,孟子、思归不出,谁能解答?
可以精确到秒,或者再精一点用Ticks它是用毫微秒的,那肯定唯一啦!
首先产生当前的时间:
Dim todyDay As Date
Dim nowTime As String
nowTime = todyDay.Now.tostring.replace("-","").replace(" ","").replace(":","")
以当前时间转化的数字为种子值产生伪随机数
Dim myRandom As New Random(CType(nowTime, Integer))
Dim a As Integer = myRandom.Next
{
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
的确用时间来生成可以,但是容易被人猜到,不安全
Random rd=new Random(1);
Response.Write(rd.Next(9999999999999));
Random rd=new Random(1000000000000);
Response.Write(rd.Next(9999999999999));
Dim MyValue As Integer
Randomize ' Initialize random-number generator.
MyValue = CInt(Int((6 * Rnd()) + 1)) ' Generate random value between 1 and 6.
/*
如:
返回1-max之间的随机数,且不重要
seed就是每取用了之后何存,以便下次使用
*/public int GetRandomNumber(int max,int seed)
{
return (seed*11+11)/max
}
有了思路后还是自己解决的好