大哥们: 如何产生6位随机数,不重复!具体要求就是随机产生 0---9之间的数,共6位,每次不能重复 (比如:1589636,896144)c#实现,狂谢大哥们!
解决方案 »
- AjaxControlToolkit.dll的使用问题
- 帖子博客权限问题 奉100分以谢高手,表达敬意
- 求一种思路,无论打开哪个网页,必须一直有一个读取的进程在进行。
- 如何使MIS系统只能使用一段时间或一定次数?在线等,急啊
- enableviewstate如何webconfig禁用,在某个页面启用
- 关于获取上一页地址是参数无法正确传递的问题
- 请问国内有专门介绍datagrid的书籍吗,或者该控件讲的比较清楚的书籍
- 用Adapter方法在数据库sqlserver里读取图片
- 请问这是怎么回事
- 如何在.net中实现执行shell命令 比如 net send 127.0.0.1 hello
- 请教一个DropDownList的问题,每次一选择其中的某一项就会有错误提示~
- asp.net技术联盟1已爆满,现开新群2(群号:17198272)
class AA
{
static void Main()
{
string [] a={'0','1','2','3','4','5','6','7','8','9'};
string strTest="";
Random r=new Random();
for(int i=0;i<6;i++)
{
strTest+=a[r.Next(0,a.Length)].ToString();
}
Console.Write(strTest);
}
}
Dim ra As New Random(CInt(Right(Now.Ticks.ToString, 8)) + TmpInt)
Return ra.Next(100000, 999999).ToString()
End Function
MaxNO = 999999 '上限
CardNo = (MaxNO - MinNO + 1) * Rnd() + MinNO
class AA
{
static void Main()
{
string [] a={'0','1','2','3','4','5','6','7','8','9'};
string strTest="";
Random r=new Random();
for(int i=0;i<6;i++)
{
strTest+=a[r.Next(0,a.Length)].ToString();
}
Console.Write(strTest);
}
}
这个好象不符合要求吧。。这个是产生六位数且每位数都不同。跟产生不同的六位数不一样吧。。
int iDown=100000;
int iUp=999999; UserNumber=Convert.ToString(ro.Next(iDown,iUp));
using System.Data;
using System.Collections;
using System.Data.SqlClient;
using Microsoft.DVAP.CommonFunction.CommonUtil;namespace PrizeOperate
{
/// <summary>
/// 随机数生成器
/// </summary>
public class RndCreator
{
//错误信息
public string strErr = ""; /// <summary>
/// 得到一个范围内的随机数字
/// </summary>
/// <param name="iLowNum">随机生成的上限值</param>
/// <param name="iHighNum">随机生成数字的下限值</param>
/// <returns></returns>
public int GetRndSingleNum(int iLowNum,int iHighNum)
{
if ((iLowNum<0)||(iHighNum<0))
{
strErr = "上限或下限的值不能 小于 零!";
return -1;
} if (iLowNum > iHighNum)
{
strErr = "上限值 不能小于 下限值!";
return -2;
} int iRndNum;
Random rnd = new Random((iHighNum-iLowNum+1) * unchecked((int)DateTime.Now.Ticks));
//返回的数值为: 一个大于或等于 iLowNum 且小于 iHighNum 的 32 位带符号整数;所以要iHighNum加1
iRndNum = rnd.Next(iLowNum,(iHighNum+1));
return iRndNum;
}
/// <summary>
/// 得到一组不同的随机数字
/// </summary>
/// <param name="iCount">要随机产生数字的个数</param>
/// <param name="iLowNum">每个数字的上限值</param>
/// <param name="iHighNum">每个数字的下限值</param>
/// <returns></returns>
public int[] GetRndArrayNum(int iCount,int iLowNum,int iHighNum)
{
int iRndNum;
int[] iRndArrayNum; if ((iLowNum<0)||(iHighNum<0))
{
strErr = "上限或下限的值不能 小于 零!";
return null;
} if (iLowNum > iHighNum)
{
strErr = "上限值 不能小于 下限值!";
return null;
} if (iCount <=0 )
{
strErr = "随机产生的数量不能 小于或等于 零!";
return null;
}
iRndArrayNum = new Int32[iCount];
for (int i=0;i<iCount;i++)
{
try
{
iRndNum = GetRndSingleNum(iLowNum,iHighNum);
//如果随机产生的数字重复,再产生随机数字,直到不重复为止
while(ifRepeate(iRndNum,iRndArrayNum)==1)
{
iRndNum = GetRndSingleNum(iLowNum,iHighNum);
}
iRndArrayNum[i] = iRndNum;
}
catch(Exception e)
{
strErr = e.Message;
throw;
}
}
return iRndArrayNum;
} //判断在数组中是否有重复的数字.0:没有重复;1:有重复;-1:出错
private int ifRepeate(int iNum,int[] iArrayNum)
{
int bRes = 0; if (iArrayNum.GetLength(0)<=0)
{
bRes = -1;
return bRes;
}
for (int i=0;i<iArrayNum.GetLength(0)-1;i++)
{
if (iNum == iArrayNum[i])
{
bRes = 1;
return bRes;
}
}
return bRes;
} /// <summary>
/// 得到任意位数的随机字符数字,每一字符位数字在规定的上限值和下限值范围内.
/// </summary>
/// <param name="iSize">随机数字的位数</param>
/// <param name="iLowNum">每个数字位的上限值</param>
/// <param name="iHighNum">每个数字位的下限值</param>
/// <returns></returns>
public string GetRndStr(int iSize,int iLowNum,int iHighNum)
{
string RndStr=""; int iFirst = 0;
int[] rtArray = new Int32[iSize]; Random rf = new Random((iHighNum-iLowNum+1) * unchecked((int)DateTime.Now.Ticks));
iFirst = rf.Next(iLowNum,iHighNum+1);
rtArray[0]=iFirst; //得到第一位
RndStr += rtArray[0].ToString();
for(int i=1;i<iSize;i++)
{
//每次给不同的种子值,避免每次数字重复
Random rdm = new Random(i * iFirst * unchecked((int)DateTime.Now.Ticks));
//返回的数值为: 一个大于或等于 iLowNum 且小于 iHighNum 的 32 位带符号整数;所以要iHighNum加1
rtArray[i] = rdm.Next(iLowNum,iHighNum+1);
iFirst = rtArray[i];
RndStr += rtArray[i].ToString();
}
return RndStr;
}
/// <summary>
/// 得到一组任意指定位数的随机字符数字
/// </summary>
/// <param name="iCount">要随机产生的各数</param>
/// <param name="iSize">每随机数字的位数</param>
/// <param name="iLowNum">每个数字位的上限值</param>
/// <param name="iHighNum">每个数字位的下限值</param>
/// <returns>返回一组随机数字数组</returns>
public string[] GetRndArrayStr(int iCount,int iSize,int iLowNum,int iHighNum)
{
string[] strRndArrayNum;
string strRndNum; if ((iLowNum<0)||(iHighNum<0))
{
strErr = "上限或下限的值不能 小于 零!";
return null;
} if (iLowNum < iHighNum)
{
strErr = "上限值 不能小于 下限值!";
return null;
} if (iSize <=0 )
{
strErr = "每个随机数字的位数字不能 小于 零!";
return null;
} if (iCount <=0 )
{
strErr = "随机产生的数量不能 小于或等于 零!";
return null;
} strRndArrayNum = new string[iCount];
for (int i=0;i<iCount;i++)
{
try
{
strRndNum = GetRndStr(iSize,iLowNum,iHighNum); //如果随机产生的数字重复,再产生随机数字,直到不重复为止
while(ifStrRepeate(strRndNum,strRndArrayNum)==1)
{
strRndNum = GetRndStr(iSize,iLowNum,iHighNum);
}
strRndArrayNum[i] = strRndNum;
}
catch(Exception e)
{
strErr = e.Message;
throw;
}
}
return strRndArrayNum;
} //判断在数组中是否有重复的数字.0:没有重复;1:有重复;-1:出错
private int ifStrRepeate(string strNum,string[] strRndArrayNum)
{
int bRes = 0; if (strRndArrayNum.GetLength(0)<=0)
{
bRes = -1;
return bRes;
}
for (int i=0;i<strRndArrayNum.GetLength(0)-1;i++)
{
if (strNum == strRndArrayNum[i])
{
bRes = 1;
return bRes;
}
}
return bRes;
} }
}
这有一个现成的例子