public string RandomNum(int n) //
{
string strchar = "0,1,2,3,4,5,6,7,8,9" ;
string[] VcArray = strchar.Split(',') ;
string VNum = "" ;//由于字符串很短,就不用StringBuilder了
int temp = -1 ; //记录上次随机数值,尽量避免产生几个一样的随机数
//采用一个简单的算法以保证生成随机数的不同
Random rand =new Random();
for ( int i = 1 ; i < n+1 ; i++ )
{
if ( temp != -1)
{
rand =new Random(i*temp*unchecked((int)DateTime.Now.Ticks));
}
//int t = rand.Next(35) ;
int t=rand.Next(10);
if (temp != -1 && temp == t)
{
return RndNum( n);
}
temp = t ;
VNum += VcArray[t];
}
return VNum ;//返回生成的随机数
}
问题:为什么要用int temp = -1;我用temp=1或其它的值可以么?
{
string strchar = "0,1,2,3,4,5,6,7,8,9" ;
string[] VcArray = strchar.Split(',') ;
string VNum = "" ;//由于字符串很短,就不用StringBuilder了
int temp = -1 ; //记录上次随机数值,尽量避免产生几个一样的随机数
//采用一个简单的算法以保证生成随机数的不同
Random rand =new Random();
for ( int i = 1 ; i < n+1 ; i++ )
{
if ( temp != -1)
{
rand =new Random(i*temp*unchecked((int)DateTime.Now.Ticks));
}
//int t = rand.Next(35) ;
int t=rand.Next(10);
if (temp != -1 && temp == t)
{
return RndNum( n);
}
temp = t ;
VNum += VcArray[t];
}
return VNum ;//返回生成的随机数
}
问题:为什么要用int temp = -1;我用temp=1或其它的值可以么?
解决方案 »
- Temporary ASP.NET Files 无法访问 问题!
- 防注问题
- 关于AJAX 评级控件的使用的问题 我分数不多了,请各位帮帮忙
- ASP.net验证控件验证用户名是否重复,有问题
- ******不能连接上远程数据库**********
- 运行在服务器上的html控件在执行客户端事件后如何保留控件中的值?
- 帮忙除错,貌似配置文件有问题.
- ??????如何用C#制作Web控件???????????
- 通易erp软件 你们觉得怎么样?
- 讨论,Server.Transfer与Response.Redirect的不同。
- 页面缓存问题
- 【200分】请各位帮忙看下,要想在asp.net中实现这个页面中gridview的效果,要怎么做?
VNum += VcArray[t];
还有最后这两句是什么意思?是不是当if不满足时。
防止重复
VNum 记录随机数
if (temp != -1 && temp == t)
{
return RndNum( n);
}
这里好像并不会执行这一句,于是我就把这句删除,发现还是可以的!
有点搞不明白
{
Random rand = new Random(Guid.NewGuid().GetHashCode());
Console.WriteLine(rand.Next(1, 10000));
}用Guid做种子 ,重复几率很低
//生成n个不重复的随机数
int VSUM = 10; //要产生多少个随机数
int VMax = 1000; //随机数的上限
List<int> RandNumber = new List<int>();
for (int i = 0; i < VSUM; i++)
{
Random rand = new Random(Guid.NewGuid().GetHashCode());
int num = rand.Next(0, VMax);
if (RandNumber.IndexOf(num) < 0)
{
RandNumber.Add(num);
}
else
{
i--;
}
} foreach (int num in RandNumber)
{
Console.WriteLine(num);
}