昨完因工作需要写一个生成N到M的不重复随机数列的小程序。所以又把多年前用过的VC6拿出来用了,还好现在网络信息非常发达,否则我还要去翻书呢。用了一个小时把程序写出来了。和多年前用VC6的感觉有很大的区别,对VC6里面的一些概念又有了新的体会,感觉比以前清晰了许多,也许所有的程序都是相通的,Java方面开发经验对VC6也会有帮助。这样的感觉真好。现在都在做Java的Web开发,相比Java觉得一些小程序用VC6实在方便。下面是我在网上找到的一个比较快速简单的生成不重复随机数列的算法:
如何产生不重复的随机数?最容易想到的方法,是逐个产生这些随机数,每产生一个,都跟前面的随机数比较,如果重复,就重新产生。这是个很笨的方法,且比较次数呈线性增长,越往后次数越多。其实这些比较是多余的,完全可以不进行比较,只要反过来,按顺序产生这些数,但随机产生它们的位置。例如下面产生100个100以内不重复随机数的代码:
int a[100];
for(i=0; i<=99; ++i) a[i]=i;
for(i=99; i>=1; --i) swap(a[i], a[rand()%i]);
上面这段代码只需要遍历一次就可以产生这100个不重复的随机数,它是如何做到的呢?首先第二行按顺序用0到99填满整个数组;第三行,是随机产生从0到m-2个数组下标,把这个下标的元素值跟m-1下标的元素值交换,一直进行到下标为1的元素。因此它只需要遍历一次就能产生全部的随机数。
分享到:
相关推荐
《易语言VC6Linker至VC2010Linker:深入解析与应用》 易语言,作为一款国人自主研发的编程语言,以其独特的中文编程界面和语法,降低了编程的入门门槛,深受广大程序员喜爱。在易语言的生态系统中,链接器(Linker...
本话题主要关注如何将VC7工程转换回VC6,这是一个常见的需求,因为有些开发者可能需要在旧版本的环境中维护或继续开发已有的项目。 首先,VC7指的是Visual Studio .NET 2003,它引入了对.NET Framework的支持,而VC...
很早不用VC6了。最近有个十几年前的VC6项目需要改动,就又把VC6安装了回来,但是习惯了番茄助手后,没有助手感觉总是很别扭。 提前声明我的是WIN10系统。在网上找了一个VC6安装各种不兼容WIN10报错,好不容易安装好...
标题中的“VC7工程转换为VC6工程的工具.rar”指的是一个可以帮助用户将基于Visual C++ 7(即Visual Studio .NET 2003)的工程文件转换为Visual C++ 6兼容格式的工具。这个过程对于那些需要在旧系统上运行或维护使用...
软件介绍: vc 6.0编程软件中一款很有用的用于显示行号...运行VC6,从菜单中依次找到Tools -> customize -> Add-ins and Macro Files然后选择VC6LineNumber Developer Studio Add-in就可以添加插件成功了。
兼容性很高的VC6兼容性很高的VC6兼容性很高的VC6兼容性很高的VC6兼容性很高的VC6兼容性很高的VC6兼容性很高的VC6兼容性很高的VC6兼容性很高的VC6兼容性很高的VC6兼容性很高的VC6兼容性很高的VC6兼容性很高的VC6兼容...
《易语言VC6连接器详解》 易语言VC6连接器是专为易语言设计的一款工具,主要用于实现易语言程序的静态编译。在软件开发过程中,编译是将源代码转换成可执行文件的关键步骤,而静态编译则是将所有依赖库合并到一个...
《VC Assist 6:提升VC6开发效率的得力助手》 在软件开发领域,Visual Studio 6(简称VC6)作为经典的C++集成开发环境,一直以来都深受程序员的青睐。尽管现在有更新版本的Visual Studio,但VC6在某些特定场景下...
标题中的"VC7_to_VC6 project converter.zip_VC7_VC6 工程文件 转换_dsw_sln 文件转换_v"指出,这是一个用于帮助用户将VC7(.NET 2003)的工程文件转换为VC6(Visual C++ 6.0)兼容格式的工具包。 描述中提到的主要...
vc6.0++显示行号插件,将插件dll放置于vc6安装目录下的\Microsoft Visual Studio\Common\MSDev98\AddIns。打开vc6,选择Tools -> customize -> Add-ins and Macro Files 勾选:VC6LineNumber Developer Studio Add-...
接下来,随着微软的更新,我们有VC7.0(即VC++ .NET 2002)、VC7.1(VC++ .NET 2003)、VC8.0(VC++ 2005)、VC9.0(VC++ 2008)、VC10.0(VC++ 2010)、VC11.0(VC++ 2012)、VC12.0(VC++ 2013)、VC14.0(VC++ ...
**VC6 MFC运行库详解** Microsoft Visual C++ 6.0(简称VC6)是微软发布的一款经典的C++开发工具,它集成了一个强大的IDE(集成开发环境)以及MFC(Microsoft Foundation Classes)库。MFC是微软为Windows平台提供...
在本案例中,我们关注的是"VC7 转换 VC6"的主题,这涉及到将使用Visual Studio 2003(也称为VC7)创建的项目转换为能够与Visual Studio 6.0(简称VC6)兼容的形式。这种转换可能是为了支持仍在使用旧版IDE的团队或...
在Visual C++ 6.0(简称VC6)环境下,开发者可以通过汇编语言或者使用特定的库函数来实现CPUID的获取。 首先,我们需要了解CPUID指令的基本工作原理。CPUID指令是x86架构处理器提供的一条汇编指令,其基本形式为`...
易语言vc6+vc7+vc8+vc9+vc2010+连接转换器.rar.tdl.qrs
标题中的"vc6+vc7+vc8+vc9+vc2010+连接转换器.rar"表明这是一个集合了不同版本的Visual C++编译器相关资源的压缩包,其中包括了从Visual C++ 6.0到Visual Studio 2010(对应的是VC9)的版本。这个压缩包特别关注的是...
《VC2008工程向VC6转换工具详解》 在软件开发过程中,有时我们需要将较新版本的Visual Studio工程转换为旧版本,以便在不支持新版本的环境中进行编译和调试。针对这种情况,"vc2008工程转为vc6工具"应运而生,它...
9. 不是VAX,VC6中只支持16中颜色,有一个插件可以修改为24位真彩色,完全可以自己定义。 网址:http://www.codeproject.com/macro/devtruecolour.asp 10.BCGControlBar Library 功能:非常好的一套应用于vc6的...
VC6卸载工具是一款专为解决Microsoft Visual C++ 6.0在Windows 10上安装及卸载问题设计的应用程序。Visual C++ 6.0是微软在1998年发布的一款经典编程环境,它包含了一个强大的C++编译器以及用于Windows应用程序开发...