Random rand = new Random(Guid.NewGuid().GetHashCode()); rand .Next(最小值,最大值) Random rnd = new Random(DateTime.Now.Millisecond);Enumerable.Range(1, 100).OrderBy(Guid.NewGuid());
随机排序一位数组 public void RandSort(int[] _num) { for (int i = 0; i < _num.Length - 1; i++) { Random rd = new Random(); int temp = rd.Next(i,_num.Length); int tempNum = _num[i]; _num[i] = _num[temp]; _num[temp] = tempNum; Thread.Sleep(20);//注意:引入命名空间:System.Threading; } }
int [] number = new int[50]; for (int i = 1; i < 51; i++) { number[i - 1] = i; } Random ran = new Random(); ran.Next(0, 50); List<int> intList = new List<int>(); for (int i = intList.Count; i <= 50; i++) { int _number = ran.Next(0, 49); if (intList.Count == 0) { intList.Add(number[_number]); } else { if (!intList.Contains(number[_number])) intList.Add(number[_number]); } } foreach (int item in intList) { this.div_1.InnerHtml += item + " , "; } 这是我自己写的,具体的效率需要你自己完善一下
IEnumerable<int> squares = Enumerable.Range(1, 50); List<int> lst = new List<int>(); foreach(int i in squares) { lst.Add(i); } int[] rslt = new int[50](); Random rand = new Random(); for(int i = 49; i>=0;i--) { int r = rand.Next(0, i); rslt[i] = lst[r]; } foreach(int t in rslt) { console.writeline(t); }
下面的做法省掉了为数组初始化的50次循环Random rd = new Random(); int[] a = new int[50]; for(int i=0;i<a.Length;i++) { int index = rd.Next(a.Length); int tmp = a[index]; a[index] = a[i]; a[i] = tmp; }for(int i=0;i<a.Length;i++) Console.Write(a[i]==0?i:a[i]);
修正下错误,自己测试下,发现基本不费时...class Program { static void Main(string[] args) { DateTime dt1 = DateTime.Now; IEnumerable<int> squares = Enumerable.Range(1, 50); List<int> lst = new List<int>(); foreach (int i in squares) { lst.Add(i); } int[] rslt = new int[50]; Random rand = new Random(); for (int i = 49; i >= 0; i--) { int r = rand.Next(0, i); rslt[i] = lst[r]; lst.RemoveAt(r); } Console.WriteLine("consume MilSec:" + (DateTime.Now - dt1).TotalMilliseconds.ToString()); int line = 0; foreach (int t in rslt) { Console.WriteLine(line++ + ":" + t.ToString()); } } }
private static void sort() { int[] arr = new int[] { 1 to 50 }; int[] keys = new int[arr.Length]; Random random = new Random(); for (int i = 0; i < keys.Length; i++) { keys[i] = random.Next(); } Array.Sort(keys, arr); // arr 现在随机了}
如果是 net3.5+,用 linq 更方便var q = from c in arr orderby r.Next() select c;
rand .Next(最小值,最大值)
Random rnd = new Random(DateTime.Now.Millisecond);Enumerable.Range(1, 100).OrderBy(Guid.NewGuid());
public void RandSort(int[] _num)
{
for (int i = 0; i < _num.Length - 1; i++)
{
Random rd = new Random();
int temp = rd.Next(i,_num.Length);
int tempNum = _num[i];
_num[i] = _num[temp];
_num[temp] = tempNum;
Thread.Sleep(20);//注意:引入命名空间:System.Threading;
}
}
int [] number = new int[50];
for (int i = 1; i < 51; i++)
{
number[i - 1] = i;
}
Random ran = new Random();
ran.Next(0, 50);
List<int> intList = new List<int>();
for (int i = intList.Count; i <= 50; i++)
{
int _number = ran.Next(0, 49);
if (intList.Count == 0)
{
intList.Add(number[_number]);
}
else
{
if (!intList.Contains(number[_number]))
intList.Add(number[_number]);
}
}
foreach (int item in intList)
{
this.div_1.InnerHtml += item + " , ";
}
这是我自己写的,具体的效率需要你自己完善一下
IEnumerable<int> squares = Enumerable.Range(1, 50);
List<int> lst = new List<int>();
foreach(int i in squares)
{
lst.Add(i);
}
int[] rslt = new int[50]();
Random rand = new Random();
for(int i = 49; i>=0;i--)
{
int r = rand.Next(0, i);
rslt[i] = lst[r];
}
foreach(int t in rslt)
{
console.writeline(t);
}
int[] a = new int[50];
for(int i=0;i<a.Length;i++)
{
int index = rd.Next(a.Length);
int tmp = a[index];
a[index] = a[i];
a[i] = tmp;
}for(int i=0;i<a.Length;i++)
Console.Write(a[i]==0?i:a[i]);
{
static void Main(string[] args)
{
DateTime dt1 = DateTime.Now;
IEnumerable<int> squares = Enumerable.Range(1, 50);
List<int> lst = new List<int>();
foreach (int i in squares)
{
lst.Add(i);
}
int[] rslt = new int[50];
Random rand = new Random();
for (int i = 49; i >= 0; i--)
{
int r = rand.Next(0, i);
rslt[i] = lst[r];
lst.RemoveAt(r);
}
Console.WriteLine("consume MilSec:" + (DateTime.Now - dt1).TotalMilliseconds.ToString());
int line = 0;
foreach (int t in rslt)
{
Console.WriteLine(line++ + ":" + t.ToString());
}
}
}
{
int[] arr = new int[] { 1 to 50 };
int[] keys = new int[arr.Length];
Random random = new Random();
for (int i = 0; i < keys.Length; i++)
{
keys[i] = random.Next();
} Array.Sort(keys, arr); // arr 现在随机了}