C#如何生成随机不重复的数字
发布网友
发布时间:2022-04-23 13:37
我来回答
共1个回答
热心网友
时间:2023-10-16 02:03
private string RndomStr(int codeLength)
{
//组成字符串的字符集合 0-9数字、大小写字母
string chars = "0,1,2,3,4,5,6,7,8,9,a,b,c,d,e,f,g,h,i,j,k,l,m,n,p,q,r,s,t,u,v,w,x,y,z,A,B,C,D,E,F,G,H,I,J,K,L,M,N,P,P,Q,R,S,T,U,V,W,X,Y,Z";
string[] charArray = chars.Split(new Char[] { ',' });
string code = "";
int temp = -1;//记录上次随机数值,尽量避避免生产几个一样的随机数
Random rand = new Random();
//采用一个简单的算法以保证生成随机数的不同
for (int i = 1; i < codeLength + 1; i++)
{
if (temp != -1)
{
rand = new Random(i * temp * unchecked((int)DateTime.Now.Ticks));//初始化随机类
}
int t = rand.Next(61);
if (temp == t)
{
return RndomStr(codeLength);//如果获取的随机数重复,则递归调用
}
temp = t;//把本次产生的随机数记录起来
code += charArray[t];//随机数的位数加一
}
return code;
}
//生成随机数字方法
public class RandomHelper
{
/// <summary>
///生成制定位数的随机码(数字)
/// </summary>
/// <param name="length"></param>
/// <returns></returns>
public static string GenerateRandomCode(int length)
{
var result = new StringBuilder();
for (var i = 0; i < length; i++)
{
var r = new Random(Guid.NewGuid().GetHashCode());
result.Append(r.Next(0, 10));
}
return result.ToString();
}
}
热心网友
时间:2023-10-16 02:03
private string RndomStr(int codeLength)
{
//组成字符串的字符集合 0-9数字、大小写字母
string chars = "0,1,2,3,4,5,6,7,8,9,a,b,c,d,e,f,g,h,i,j,k,l,m,n,p,q,r,s,t,u,v,w,x,y,z,A,B,C,D,E,F,G,H,I,J,K,L,M,N,P,P,Q,R,S,T,U,V,W,X,Y,Z";
string[] charArray = chars.Split(new Char[] { ',' });
string code = "";
int temp = -1;//记录上次随机数值,尽量避避免生产几个一样的随机数
Random rand = new Random();
//采用一个简单的算法以保证生成随机数的不同
for (int i = 1; i < codeLength + 1; i++)
{
if (temp != -1)
{
rand = new Random(i * temp * unchecked((int)DateTime.Now.Ticks));//初始化随机类
}
int t = rand.Next(61);
if (temp == t)
{
return RndomStr(codeLength);//如果获取的随机数重复,则递归调用
}
temp = t;//把本次产生的随机数记录起来
code += charArray[t];//随机数的位数加一
}
return code;
}
//生成随机数字方法
public class RandomHelper
{
/// <summary>
///生成制定位数的随机码(数字)
/// </summary>
/// <param name="length"></param>
/// <returns></returns>
public static string GenerateRandomCode(int length)
{
var result = new StringBuilder();
for (var i = 0; i < length; i++)
{
var r = new Random(Guid.NewGuid().GetHashCode());
result.Append(r.Next(0, 10));
}
return result.ToString();
}
}
随机函数随机不重复数字序列的生成方法二
在Excel中,如果你想生成不重复的随机数字序列,可以在A1单元格输入公式 `=RAND()*100000`,然后向下填充N个单元格。接着,在B1单元格使用排序公式 `=RANK(A1,A:A)`,双击填充或向下填充至BN,就能得到所需的N个不同随机数。这些随机数是通过公式对原始随机数进行排序得到的,确保了重复性的消除。
C#中用random求不重复的四位随机数
Random ran=new Random();int RandKey=ran.Next(100,999);不过这样会有重复,可以给Random一个系统时间做为参数,以此产生随机数,就不会重复了 int iSeed=6;Random ra=new Random(iSeed);int RandKey=ra.Next(100,999);
C# 如何生成不重复的1-100随机数。
有两种思路:1、随机生成一个1-100的数,然后判断重复,如果重复再生成一次;2、创建一个数组,元素内容为1-100,对元素随机排序。请参考下面的代码 public void GenerateRandomNums(){ List list = new List();Random rand = new Random();int value;while (true){ if (list.Count == 20){ ...
C#生成制定范围和数量的随机数,要求不重复
list.Contains(num))//集合list不包含num,就把num添加进list。这样保证不重复 { list.Add(num); } else { i--; } }
c#有没有函数能生成不重复的随机数,比如1-10之间的不重复随机数???
用Random类生成随机数,然后还前面生成的随机数比较,如果相同就删除。然后继续用Random生成随机数只到生成的随机数一个都不重复 下面的代码可以参考一下,主要是用了RAND类的NEXT方法 int[] randomArray = new int[20];Random random=new Random();randomArray[0] = random.Next(1, 10);for (int...
C#如何生成一个不重复随机数组
n = rand.Next(0, r);//随机产生一个0~9之间的数,r的初始值是9 newNum[i] = num[n];//把产生的随机数当成num的下标赋给newNum数组 tmp = num[n];//然后把num[n]和它最后一个数交换(num[r]),这是避免重复 num[n] = num[r];num[r] = tmp;r--;//自减,下次产生的随机...
C#数组中抽随机数,不检验,不重复
从A[0]开始,将A[0]与随机数0-19之间的任意一个位置上的A的数据进行交换,下面是A[1],同样与0-19之间的任意数据交换,直接A[19],一共循环20次(简单来说这一步就是要将A乱序排列)之后赋给B就简单了,第一次是从A[0]至A[5](可以直接用Array.Copy),第二次是A[6]至A[11],第...
c#获取一个数组中不重复的随机数
static void Main(string[] args) { int[] nums = { 1, 2, 3, 4, 5, 6, 7, 8, 9 }; Random r = new Random(); var r4 = nums.OrderBy(x => r.Next()).Take(4); foreach (int n in r4) Console.WriteLine(n); Console.ReadLine(); } ...
c#生成6个随机数,要求1到33之间不重复的随机数,要最简单的写法
1-33放在一个集合里面,随机数=1到集合长度。随机一个,就取出集合对应位置的数字,并且删除这行。继续随机数=1到集合长度,再取。 循环6次就完了。
c#不用数据库怎么弄出来随机数?
你好:方法1:思想是用一个数组来保存索引号,先随机生成一个数组位置,然后把这个位置的索引号取出来,并把最后一个索引号复制到当前的数组位置,然后使随机数的上限减一,具体如:先把这100个数放在一个数组内,每次随机取一个位置(第一次是1-100,第二次是1-99,...),将该位置的数用最后...