答:api
int[] intArr=new int[100]; ArrayList myList=new ArrayList(); Random rnd=new Random(); while(myList.Count<100) { int num=rnd.Next(1,101); if(!myList.Contains(num)) myList.Add(num); } for(int i=0;i<100;i++) intArr[i]=(int)myList[i];
Random类表示伪随机数生成器,它是生成知足某些随机性统计要求的数字序列的设备。数组
基本用法:缓存
//使用随机数填充指定字节数组的元素。 byte[] bytes = new byte[5]; rand.NextBytes(bytes); //返回非负随机整数。 Console.Write("{0,15:N0}", rand.Next()); //返回小于指定最大值的非负随机整数。 Console.Write("{0,8:N0}", rand.Next(101)); //返回指定范围内的随机整数。 Console.Write("{0,8:N0}", rand.Next(50, 101)); //返回大于或等于0.0且小于1.0的随机浮点数。 Console.Write("{0,8:N3}", rand.NextDouble()); Console.Write("{0,8:N3}", rand.NextDouble() * 5);
演示:*dom
using System; class Program { static void Main() { //建立新的Random对象. Random random = new Random(); //获取3个随机数. //这些老是5,6,7,8或9. Console.WriteLine("RANDOM: " + random.Next(5, 10)); Console.WriteLine("RANDOM: " + random.Next(5, 10)); Console.WriteLine("RANDOM: " + random.Next(5, 10)); } }
加密:ide
对于简单的任务,Random类就足够了。但对于复杂的事物,RNGCryptoServiceProvider更好。加密
using System; class Program { static void Main() { //调用使用类级Random的方法. UseStatic(); //调用相同的方法. //随机数序列仍然是随机的. UseStatic(); } static Random _random = new Random(); static void UseStatic() { //使用类级随机。 int result = _random.Next(); Console.WriteLine("STATIC RANDOM: " + result); } }
使用字段或传递Random做为参数以免重复的随机数。pwa
class Program
{code
static void Main() { Test(); Test(); Test(); } static void Test() { /建立随机并使用它。 //这是时间相关的,因此若是屡次调用能够重复。 var random = new System.Random(); System.Console.WriteLine("CURRENT: " + random.Next()); }
}对象
将整数传递给Random.Next()时,获得的结果范围为0到maxValue - 1。排序
using System; class Program { static void Main() { F(); F(); F(); F(); F(); F(); } static Random _r = new Random(); static void F() { int n = _r.Next(5); //能够返回0,1,2,3或4。. Console.WriteLine(n); } }
ToArray将语句中的可枚举字母再次转换为字符串,生成最终结果:随机字符串。
using System; using System.Linq; class Program { static void Main() { const string original = "senators"; Random num = new Random(); //从从新排序的char数组中建立新字符串。. string rand = new string(original.ToCharArray(). OrderBy(s => (num.Next(2) % 2) == 0).ToArray()); Console.WriteLine("original: {0}\r\nrand: {1}", original, rand); Console.Read(); } }
在Random类型上调用NextBytes方法以获取随机字节数组。每一个字节的小数范围为0到255。
using System; class Program { static void Main() { //将随机字节放入此数组中. byte[] array = new byte[8]; //使用Random class和NextBytes方法。 //使用如下方法显示字节。. Random random = new Random(); random.NextBytes(array); Display(array); random.NextBytes(array); Display(array); } static void Display(byte[] array) { //循环并显示数组中的字节. foreach (byte value in array) { Console.Write(value); Console.Write(' '); } Console.WriteLine(); } }
使用随机整数预先填充List。
using System; using System.Collections.Generic; using System.Diagnostics; class Program { static Random _random = new Random(); static List<int> _randomCache = new List<int>(); static void AddRandoms() { //将随机数添加到列表中供之后使用. for (int i = 0; i < 1000; i++) { _randomCache.Add(_random.Next()); } } const int _max = 10000000; static void Main() { //预先计算一些随机的int. AddRandoms(); //获取新的随机int. var s1 = Stopwatch.StartNew(); for (int i = 0; i < _max; i++) { int random = _random.Next(); if (random < 0) { return; } } s1.Stop(); //从列表中使用缓存的随机int. var s2 = Stopwatch.StartNew(); for (int i = 0; i < _max; i++) { int random = _randomCache[i % _randomCache.Count]; if (random < 0) { return; } } s2.Stop(); Console.WriteLine(((double)(s1.Elapsed.TotalMilliseconds * 1000000) / _max).ToString("0.00 ns")); Console.WriteLine(((double)(s2.Elapsed.TotalMilliseconds * 1000000) / _max).ToString("0.00 ns")); } }