随机数
来源:互联网 发布:紧急域名升级通知访问 编辑:程序博客网 时间:2024/04/20 07:55
C#生成不重复随机数
/// <summary>
/// 功能描述:返回不重复随机数数组
/// 作者: 杨艳峰
/// 创建日期:2006-4-30
/// </summary>
/// <param name="Num">随机数个数</param>
/// <param name="minNum">随机数下限</param>
/// <param name="maxNum">随机数上限</param>
/// <returns></returns>
public int[] GetRandomArray(int Number,int minNum,int maxNum)
{
int j;
int[] b=new int[Number];
Random r=new Random();
for(j=0;j<Number;j++)
{
int i=r.Next(minNum,maxNum+1);
int num=0;
for(int k=0;k<j;k++)
{
if(b[k]==i)
{
num=num+1;
}
}
if(num==0 )
{
b[j]=i;
}
else
{
j=j-1;
}
}
return b;
}
- using System;
- using System.Collections.Generic;
- using System.Text;
- using System.Collections;
- namespace 生成N个不重复随机数的两个函数
- {
- class Program
- {
- static void Main(string[] args)
- {
- DateTime d1 = System.DateTime.Now;
- int[] list1 = GetRandom1(1, 100000, 5000);
- TimeSpan dd1 = System.DateTime.Now - d1;
- DateTime d2 = System.DateTime.Now;
- int[] list2 = GetRandom2(1, 100000*100, 5000);
- TimeSpan dd2 = System.DateTime.Now - d2;
- //foreach (int i in list1)
- // Console.Write("{0},", i);
- //foreach (int ii in list2)
- // Console.Write("{0},", ii);
- Console.WriteLine("第一种方法,1-100000 里取5000个用时:{0}", dd1.TotalMilliseconds);
- Console.WriteLine("第二种方法,1-100000*100里取5000个用时:{0}", dd2.TotalMilliseconds);
- Console.WriteLine("判断第二种方法里是否有重复数,如果是5000就是没有重复的:{0}",RemoveDup(list2).Length);
- Console.ReadKey();
- }
- public static int[] RemoveDup(int[] myData)
- {
- if (myData.Length > 0)
- {
- Array.Sort(myData);
- int size = 1;
- for (int i = 1; i < myData.Length; i++)
- if (myData[i] != myData[i - 1])
- size++;
- int[] myTempData = new int[size];
- int j = 0;
- myTempData[j++] = myData[0];
- for (int i = 1; i < myData.Length; i++)
- if (myData[i] != myData[i - 1])
- myTempData[j++] = myData[i];
- return myTempData;
- }
- return myData;
- }
- //方法1
- public static int[] GetRandom1(int minValue, int maxValue, int count)
- {
- Random rnd = new Random();
- int length = maxValue - minValue + 1;
- byte[] keys = new byte[length];
- rnd.NextBytes(keys);
- int[] items = new int[length];
- for (int i = 0; i < length; i++)
- {
- items[i] = i + minValue;
- }
- Array.Sort(keys, items);
- int[] result = new int[count];
- Array.Copy(items, result, count);
- return result;
- }
- //方法2
- public static int[] GetRandom2(int minValue, int maxValue, int count)
- {
- int[] intList = new int[maxValue];
- for (int i = 0; i < maxValue; i++)
- {
- intList[i] = i + minValue;
- }
- int[] intRet = new int[count];
- int n = maxValue;
- Random rand = new Random();
- for (int i = 0; i < count; i++)
- {
- int index = rand.Next(0, n);
- intRet[i] = intList[index];
- intList[index] = intList[--n];
- }
- return intRet;
- }
- }
- }
- 随机数
- 随机数
- 随机数。。。
- 随机数
- 随机数
- 随机数
- 随机数
- 随机数
- 随机数
- 随机数
- 随机数
- 随机数
- 随机数
- 随机数
- 随机数
- 随机数
- 随机数
- 随机数
- FCKeditor在.net(asp.net)中的使用方法
- 又一个新的开源的cfml服务器。
- 【并查集】数据结构与算法实验题 11.3 培养箱分配问题
- HtmlParser--NodeIterator
- 图论算法——拓扑排序
- 随机数
- 拼音的显示问题
- 2009-8-1
- 我的博客今天为止共101015次访问,排名1164,好友227人,关注者222人。
- Javascript本地类型--date类
- VB VC混合编程第一步
- PHP中设置、使用、删除Cookie方法
- JFreeChart的中文乱码问题解决。
- JAVA的浮点运算精度问题的解决