110,535
社区成员
发帖
与我相关
我的任务
分享
using System;
using System.Collections.Generic;
using System.Text;
namespace tester
{
/// <summary>
/// 产生不重复随机数的应用
/// 郑少东 2008.08.24
/// 摘要 C#随机数的应用中 如果是需要在短时间内产生大量随机数 推荐使用Guid.NewGuid().GetHashCode()作为种子
/// </summary>
class Program
{
static void Main(string[] args)
{
Console.WriteLine(String.Format("开始时间{0}", DateTime.Now.ToString("yyyy-MM-dd hh:ss fff")));
List<int> Numbers = Program.GetRandom(1, 1000);
for (int i = 0; i < Numbers.Count;i++ )
{
//Console.WriteLine(Numbers[i]);
}
Console.WriteLine(String.Format("结束时间{0}", DateTime.Now.ToString("yyyy-MM-dd hh:ss fff")));
Console.ReadLine();
}
/// <summary>
/// 返回一组唯一不重复的随机数
/// </summary>
/// <param name="minValue">最小值</param>
/// <param name="maxValue">最大值</param>
/// <returns>返回一组唯一不重复的随机数</returns>
public static List<int> GetRandom(int minValue, int maxValue)
{
List<int> Numbers = new List<int>();
//使用Guid.NewGuid().GetHashCode()作为种子,可以确保Random在极短时间产生的随机数尽可能做到不重复
Random rand = new Random(Guid.NewGuid().GetHashCode());
int item;
for (int i = minValue; i <= maxValue; i++)
{
item = rand.Next(minValue, maxValue + 1);
while (Numbers.IndexOf(item) != -1)
{
item = rand.Next(minValue, maxValue + 1);
}
Numbers.Add(item);
}
return Numbers;
}
}
}