C#中如何从数组中获取一个随机数
C#中如何从数组中获取一个随机数如果INT[]XX=NEWINT[3]{6,5,4};INTX;如何让X随机从数组XX中取一个数?...
C#中如何从数组中获取一个随机数
如果INT [] XX = NEW INT [3] {6,5,4};
INT X;
如何让X随机从数组XX中取一个数? 展开
如果INT [] XX = NEW INT [3] {6,5,4};
INT X;
如何让X随机从数组XX中取一个数? 展开
4个回答
2013-06-06
展开全部
最简单的就是用Random产生1个随机数,随机数的范围为0~XX.length-1;这样的话比如数组是20个数,那么残生的随机数n就在(0~19)之间,然后把n带进数组XX[n]就可以取出随机索引的数了撒~ INT [] XX = NEW INT [3] {6,5,4};
Random r = new Random(); int n = r.Next(0, XX.length-1);XX[n]就是随机取出的数
Random r = new Random(); int n = r.Next(0, XX.length-1);XX[n]就是随机取出的数
展开全部
通过使用Random自动生成一个随机数,确定数组的下标,从而活得随机一个数组
string[] item=new string[4]{"a","b","c","d"} ;
Random r = new Random();
string fi1 = item[r.Next(item.Length)];
string[] item=new string[4]{"a","b","c","d"} ;
Random r = new Random();
string fi1 = item[r.Next(item.Length)];
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
2013-06-06
展开全部
在C#中获取随机数有三种方法:
一.Random 类Random类默认的无参构造函数可以根据当前系统时钟为种子,进行一系列算法得出要求范围内的伪随机数.view sourceprint? 1 Random rd = new Random(); 2 int i = rd.Next();这种随机数可以达到一些要求较低的目标,但是如果在高并发的情况下,Random类所取到的系统时钟种子接近甚至完全一样,就很有可能出现重复,这里用循环来举例view sourceprint? 1for (int i = 0; i < 10; i++) 2{ 3 Random rd = new Random(); //无参即为使用系统时钟为种子 4 Console.WriteLine(rd.Next().ToString()); 5}这个例子会输出10个相同的"随机数".突显出的问题:因为Random进行伪随机数的算法是固定的,所以根据同一个种子计算出的数字必然是一样的.而以当代计算机的运行速度,该循环几乎是在瞬间完成的,种子一致,所以会出现10次循环输出同一随机数的情况.
二.Guid 类System.GuidGUID (Globally Unique Identifier) 全球唯一标识符GUID的计算使用到了很多在本机可取到的数字,如硬件的ID码,当前时间等.所计算出的128位整数(16字节)可以接近唯一的输出.view sourceprint? 1 Console.WriteLine(Guid.NewGuid().ToString());
计算结果是xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx结构的16进制数字.
三.RNGCryptoServiceProvider 类System.Security.Cryptography.RNGCryptoServiceProvider RNGCryptoServiceProvider 使用加密服务提供程序 (CSP) 提供的实现来实现加密随机数生成器 (RNG)view sourceprint? 1RNGCryptoServiceProvider csp = new RNGCryptoServiceProvider(); 2byte[] byteCsp = new byte[10]; 3csp.GetBytes(byteCsp); 4Console.WriteLine(BitConverter.ToString(byteCsp));因该类使用更严密的算法.所以即使如下放在循环中,所计算出的随机数也是不同的.view sourceprint? 1for (int i = 0; i < 10; i++) 2{ 3 RNGCryptoServiceProvider csp = new RNGCryptoServiceProvider(); 4 byte[] byteCsp = new byte[10]; 5 csp.GetBytes(byteCsp); 6 Console.WriteLine(BitConverter.ToString(byteCsp)); 7}view sourceprint? 1但是RNGCryptoServiceProvider的计算较为繁琐,在循环中使用会消耗造成大量的系统资源开销,使用时需注意.
四.Membership.GeneratePassword()Membership是一个方便快捷的进行角色权限管理的类,偶然发现一个很有意思的方法,跟随机数也擦点边吧view sourceprint? 01public static string GeneratePassword(int length, int numberOfNonAlphanumericCharacters); 02// 03// 摘要: 04// 生成指定长度的随机密码。 05// 06// 参数: 07// numberOfNonAlphanumericCharacters: 08// 生成的密码中的标点字符数。 09// 10// length: 11// 生成的密码的字符数。长度必须介于 1 和 128 个字符之间。 12// 13// 返回结果: 14// 指定长度的随机密码。
例:view sourceprint? 1for (int i = 0; i < 10; i++) 2{ 3 Response.Write(Membership.GeneratePassword(20, 1) + "<BR>"); 4}
一.Random 类Random类默认的无参构造函数可以根据当前系统时钟为种子,进行一系列算法得出要求范围内的伪随机数.view sourceprint? 1 Random rd = new Random(); 2 int i = rd.Next();这种随机数可以达到一些要求较低的目标,但是如果在高并发的情况下,Random类所取到的系统时钟种子接近甚至完全一样,就很有可能出现重复,这里用循环来举例view sourceprint? 1for (int i = 0; i < 10; i++) 2{ 3 Random rd = new Random(); //无参即为使用系统时钟为种子 4 Console.WriteLine(rd.Next().ToString()); 5}这个例子会输出10个相同的"随机数".突显出的问题:因为Random进行伪随机数的算法是固定的,所以根据同一个种子计算出的数字必然是一样的.而以当代计算机的运行速度,该循环几乎是在瞬间完成的,种子一致,所以会出现10次循环输出同一随机数的情况.
二.Guid 类System.GuidGUID (Globally Unique Identifier) 全球唯一标识符GUID的计算使用到了很多在本机可取到的数字,如硬件的ID码,当前时间等.所计算出的128位整数(16字节)可以接近唯一的输出.view sourceprint? 1 Console.WriteLine(Guid.NewGuid().ToString());
计算结果是xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx结构的16进制数字.
三.RNGCryptoServiceProvider 类System.Security.Cryptography.RNGCryptoServiceProvider RNGCryptoServiceProvider 使用加密服务提供程序 (CSP) 提供的实现来实现加密随机数生成器 (RNG)view sourceprint? 1RNGCryptoServiceProvider csp = new RNGCryptoServiceProvider(); 2byte[] byteCsp = new byte[10]; 3csp.GetBytes(byteCsp); 4Console.WriteLine(BitConverter.ToString(byteCsp));因该类使用更严密的算法.所以即使如下放在循环中,所计算出的随机数也是不同的.view sourceprint? 1for (int i = 0; i < 10; i++) 2{ 3 RNGCryptoServiceProvider csp = new RNGCryptoServiceProvider(); 4 byte[] byteCsp = new byte[10]; 5 csp.GetBytes(byteCsp); 6 Console.WriteLine(BitConverter.ToString(byteCsp)); 7}view sourceprint? 1但是RNGCryptoServiceProvider的计算较为繁琐,在循环中使用会消耗造成大量的系统资源开销,使用时需注意.
四.Membership.GeneratePassword()Membership是一个方便快捷的进行角色权限管理的类,偶然发现一个很有意思的方法,跟随机数也擦点边吧view sourceprint? 01public static string GeneratePassword(int length, int numberOfNonAlphanumericCharacters); 02// 03// 摘要: 04// 生成指定长度的随机密码。 05// 06// 参数: 07// numberOfNonAlphanumericCharacters: 08// 生成的密码中的标点字符数。 09// 10// length: 11// 生成的密码的字符数。长度必须介于 1 和 128 个字符之间。 12// 13// 返回结果: 14// 指定长度的随机密码。
例:view sourceprint? 1for (int i = 0; i < 10; i++) 2{ 3 Response.Write(Membership.GeneratePassword(20, 1) + "<BR>"); 4}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
2013-06-06
展开全部
int[] xx = new int[3] { 6, 5, 4 };
int x;
Random r = new Random();
x = r.Next(4, 6);
int x;
Random r = new Random();
x = r.Next(4, 6);
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询