- 浏览: 724854 次
- 性别:
- 来自: 北京
文章分类
- 全部博客 (1081)
- [网站分类]1.首页原创精华.NET区(包含架构设计、设计模式)(对首页文章的要求:原创、高质量、经过认真思考并精心写作) (0)
- [网站分类]2..NET新手区(用于发表不合适发表在首页的.NET技术文章,包括小经验、小技巧) (1)
- [网站分类]3.非技术区(技术之外的文章,但不要涉及任何政治内容) (0)
- [网站分类]4.其他技术区 (0)
- [网站分类]5.企业信息化 (0)
- [网站分类]6.读书心得区(技术书籍阅读心得、书籍推荐) (0)
- [网站分类]7.提问区(.NET技术方面的提问) (2)
- [网站分类]8.技术转载区(.NET技术文章转载, 请注明原文出处) (0)
- [网站分类]9.求职招聘区(个人求职、企业招聘) (0)
- [网站分类]Dottext区 (0)
- [网站分类]GIS技术 (0)
- [网站分类]IT英才专区(IT职场交流) (0)
- [网站分类]SharePoint (0)
- [网站分类]博客园.NET俱乐部(俱乐部组织与活动方面的文章) (0)
- [网站分类]软件发布区(发布自己开发的代码、软件) (0)
- [网站分类]网站管理区(网站管理方面的疑问、建议、意见, 寻求管理员帮助) (0)
- [网站分类]业界新闻 (1)
- 技术 (1)
- [随笔分类]生活感悟 (10)
- [随笔分类]C# (30)
- [随笔分类]AjaxPro教程 (3)
- [发布至博客园首页] (5)
- [随笔分类]简历 (0)
- [随笔分类]Linux (2)
- [随笔分类]技术聚会 (2)
- [随笔分类]ORM (1)
- [随笔分类]php (1)
- [随笔分类]创业 (1)
- [随笔分类]奇技淫巧 (1)
- [随笔分类]计划 (1)
- [随笔分类]架构&分层 (1)
- [随笔分类]整合行销 (1)
- [随笔分类]mac (1)
- [网站分类].NET新手区 (45)
- [网站分类]非技术区 (5)
- [网站分类]招聘区 (0)
- [随笔分类]单元测试 (1)
- [网站分类]其他技术区 (3)
- [网站分类]代码与软件发布 (6)
- [网站分类]提问区 (24)
- [随笔分类]ASP.NET (2)
- [随笔分类]FAQ (12)
- [随笔分类]开发人员工具 (1)
- [随笔分类]朗志轻量级项目管理解决方案 (1)
- [网站分类]读书区 (1)
最新评论
-
天使建站:
写和乱七八糟的 不知道从哪复制过来的 还是看这里吧j ...
jquery数组 -
hyn450:
你好,我最近也想了解一下竞争情报。不知道能不能交流一下呢 ?
最近的工作 -
lattimore:
这个连接打不开了阿!
使用vnc连ubuntu desktop -
MZhangShao:
奉劝你一句,以后在Ubuntu 用apt-get安装成功的软件 ...
关于xrdp的安装设置 -
f002489:
strftime
python下datetime类型的转换
Code
<!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />-->using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace BerkeleyDBDemo
{
class Class16
{
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.WriteLine("my test=================");
int[] a=GetRandom1(1, 100, 99);
Array.Sort(a);
foreach(var i in a)
Console.WriteLine(i);
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;
}
}
}
在博问中TerryLee ,丁学给出了自己的答案,但是最后还是google了三番,觉得上面这两种方法是比较不错的实现,最近懒了,发现如果代码绕的弯太大,总想有没有简洁的方法实现,如果太复杂,我就会用最折衷的方法就去实现,代码写的太复杂日后也看不懂, 注意这里没有处理这种情况,当想在1-10中取出11个不重复的数时的情况,这种情况显示会抛出异常,在自己使用时加个异常处理或是判断
<!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />-->using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace BerkeleyDBDemo
{
class Class16
{
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.WriteLine("my test=================");
int[] a=GetRandom1(1, 100, 99);
Array.Sort(a);
foreach(var i in a)
Console.WriteLine(i);
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;
}
}
}
发表评论
-
关于分层架构中的业务实体层的使用一直不太清楚,可否指点一下?
2007-03-23 09:10 671我知道业务逻辑层又可细分为三个层次,分别是业务外观层业务规则层 ... -
xml反串行化
2007-07-02 17:23 7321using System; 2using Syste ... -
WriteXmlSchema(xsdFileName)和GetXmlSchema()输出的内容的差异
2007-07-04 19:00 881利用DataSet.ReadXml载入一个xml文件,再使用G ... -
对websharp中aspect的改进(待续)
2007-11-17 14:27 692缘起 为了在我的《朗志轻量级项目管理解决方案》项目中应用 ... -
WebSharp Aspect改进(续2)
2007-11-19 21:39 700接着上次在《朗志轻量级项目管理解决方案》中对Aspec ... -
TreeView(树形控件)中常用到的属性和事件
2007-11-19 22:22 12941.TreeView(树形控件) ... -
有没有适合的的面向对象的查询语言(Object Query Language)
2007-11-28 10:15 759在我做《朗志轻量级项目管理解决方案》的过程中,我希望 ... -
问题解答集
2007-11-29 18:11 4401 如何在源代码的目录下添加一个测试文件 ... -
FckEditor自定义按钮
2007-11-29 18:35 830目录 FckEditor自定义按钮 1 目录 ... -
GhstDoc2.1.1使用手册
2007-11-29 18:39 721目录 GhstDoc2.1.1使用手册 1 ... -
Log4net使用说明
2007-11-29 18:44 785Log4net使用说明 1 修改历史纪录 ... -
MySQLHelper类使用说明
2007-11-29 18:46 1315目录 MySQLHelper类使用说明 1 目录 ... -
NDoc1.3.1使用手册
2007-11-29 18:47 765目录 NDoc1.3.1使用手册 1 目录 ... -
程序中操作Word
2007-11-29 18:52 728目录 程序中操作Word 1 目录 2 ... -
利用SMTP服务发送电子邮件
2007-11-29 18:58 1352目录 利用SMTP服务发送电子邮件 1 目录 ... -
程序中操作Excel
2007-11-29 18:59 637目录 程序中操作Excel 1 目录 ... -
访问被拒绝:“AjaxPro”的解决方案
2007-11-29 19:01 531目录 访问被拒绝:&qu ... -
sqlserver的版本号
2008-02-27 21:01 819当你安装了sqlserver 2005之后你就可以使用sqls ... -
在安装有VS2008beta2版本的机子上使用vs2005进行部署出现问题的解决方法
2008-02-27 21:13 679我知道,2008rtm发布已经很久了,不巧的是同学在我的机子上 ... -
忙话codesmith
2008-07-28 15:01 866为什么不是闲话,因为我很忙,项目中新问题是接连不断,上一篇讲到 ...
相关推荐
在易语言中,生成不重复随机数是一项常见的需求,特别是在游戏开发、数据分析或者算法设计等场景。本文将深入探讨如何在易语言中实现取不重复随机数的功能。 首先,我们需要了解易语言中的随机数生成函数。在易语言...
在JavaScript编程语言中,生成1到100之间不重复的随机数字是一项常见的需求,尤其在游戏、模拟或数据测试等场景中。...不过,上述解释已经涵盖了生成1到100之间不重复随机数的基本思路和常见实现方式。
根据提供的标题、描述以及部分代码内容,我们可以总结出在Visual Basic (简称VB)环境中生成不重复随机数的主要方法。此技术常用于各种场景,比如彩票系统、抽奖程序或需要无重复随机选择的应用。 ### 一、基本原理 ...
在编程领域,生成1到N的不重复随机数是一个常见的需求,这在各种场景中都有应用,例如模拟抽奖、创建随机测试数据或者在游戏中分配资源等。这个任务涉及到两个主要的知识点:随机数生成和数组去重。 首先,我们来...
在“易语言取不重复随机数.rar”这个压缩包中,我们可以找到关于如何在易语言中生成不重复随机数的相关教程或源代码。 在编程中,生成随机数是一项常见的任务,特别是在游戏、模拟、加密等领域。而在易语言中,生成...
"取不重复随机数.rar"这个文件可能包含了一个易语言(EasyLanguage)的程序或者示例,用于解决这个问题。易语言是一种简洁、直观的中文编程语言,旨在降低编程门槛,让更多人能够进行计算机编程。 生成不重复随机数...
'产生1-10不重复的随机数 '想法: '随机1-10这十个数,不想每次都是从一到十这样随机,而是可以从任意一个数到十, '然后在循环回来到这个数,这样随机。从五开始的话,就是随机5-10,然后1-4这样随机
第三种方法涉及递归函数,用于生成指定范围内的不重复随机数。核心逻辑如下: 1. 初始化一个`Random`实例,用于生成随机数。 2. 创建一个整型数组`arrNum`,用于存储生成的随机数。 3. 在循环中,调用`getNum`函数...
public boolean hasNumber(int[] array,int num)
词典对象在VBScript中提供了一个哈希表结构,允许我们存储键值对,它具有检查键是否已存在的功能,这正是我们解决不重复随机数问题的关键。 首先,我们需要引入`Scripting`命名空间,以使用FSO对象: ```vb Dim ...
System.out.println("生成的十个不重复随机数为:"); for (int number : uniqueNumbers) { System.out.println(number); } } } ``` 在这个代码中,我们创建了一个`HashSet`来存储生成的随机数,然后在一个循环...
在IT领域,生成不重复的随机数序列是一个常见的需求,尤其是在需要进行随机抽样、数据模拟或游戏开发等场景中。下面将详细解析如何通过编程实现这一目标,并深入探讨其背后的算法逻辑和技术要点。 ### 核心知识点:...
直接运行main即可,参数为数字范围 比如10 运行后会输出9,3,0,7,2,8,4,1,5,6,
java代码产生不重复的随机数,有用处,可以参考!
本文将深入探讨一种在Java中实现的高效算法,该算法能够生成指定范围内的不重复随机数数组,特别适用于随机组题等应用场景。 ### 核心知识点解析 #### 1. 算法原理 算法的核心思想是首先创建一个包含指定范围内...
利用hashset产生不重复随机数的函数,附含测试数据; 调用方法 int[] arr=noDup(max,num),max为最大的数,num为要产生的随机数个数
### 生成不重复随机数的算法 在许多应用领域中,比如在线考试系统、游戏开发或是数据处理等场景,生成不重复的随机数是一项非常重要的技术。本文将详细介绍几种不同的方法来实现这一功能,并通过具体的Java代码示例...
在Java编程中,生成不重复随机数是一项常见的需求,特别是在模拟抽奖、随机选取样本或创建唯一标识符等场景。本文将详细介绍四种不同的方法来实现这一功能。 ### 方法一:使用HashSet **HashSet** 是Java集合框架...
`rand() % 100 + 1`用于生成[1, 100]范围内的随机整数。最后,`SetDlgItemInt`函数用于将生成的随机数显示在具有ID `IDC_SHOW_RANDOM`的静态文本控件上。 如果你在压缩包文件中找到了名为`proc1.exe`的文件,这很...