昨完因工作需要写一个生成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的元素。因此它只需要遍历一次就能产生全部的随机数。
分享到:
相关推荐
兼容性很高的VC6兼容性很高的VC6兼容性很高的VC6兼容性很高的VC6兼容性很高的VC6兼容性很高的VC6兼容性很高的VC6兼容性很高的VC6兼容性很高的VC6兼容性很高的VC6兼容性很高的VC6兼容性很高的VC6兼容性很高的VC6兼容...
易语言编译连接器 vc6linker vc7linker vc8linker vc9linker vc2010linker
VC7工程转换回VC6
vc6.0++显示行号插件,将插件dll放置于vc6安装目录下的\Microsoft Visual Studio\Common\MSDev98\AddIns。打开vc6,选择Tools -> customize -> Add-ins and Macro Files 勾选:VC6LineNumber Developer Studio Add-...
易语言vc6_vc7_vc8_vc9_vc2010到vc2022静态编译12个版本,截止2022年所以vc++版本都完美支持!文件放在易语言根目录。
VC6 贪吃蛇,源码 VC6 贪吃蛇,源码 VC6 贪吃蛇,源码 VC6 贪吃蛇,源码
易语言静态链接vc6+vc7+vc8+vc9+vc2010+连接转换器。
易语言vc6+vc7+vc8+vc9+vc2010+连接转换器
VC7工程转换为VC6工程的工具,用过,效果还不错
重装VC6.0前,怎样删除注册表中的vc6.pdf
在这里详细的介绍了,VC6调用WebService的方法。
VC6_FixFont修改VC6字体,点击写入注册表,可以对VC6的字体进行设置.
VC6 获取CPUID VC6 获取CPUID VC6 获取CPUID VC6 获取CPUID VC6 获取CPUID
vc2008工程转为vc6工具,将.sln转为.dsw, 没有安装vs2008的,没有安装vs2008的朋友可以用这个工具转换为vc6工程,然后直接打开.dsw文件,用vc6编译
易语言vc6+vc7+vc8+vc9+vc2010+连接转换器.rar.tdl.qrs
VC7到VC6工程的转换工具, VC7到VC6工程的转换工具 VC7到VC6工程的转换工具
高兴!Win2K换成了2008,VC6换成了VC2010 问题来了有些项目还在用老土的 VC6 咋办? VC2003-2010项目转换成VC6工具 VC6开发必备
VC6显行号插件,(VC6LineNumberAddin),内附安装方法和注册程序,使vc6也能显示每一行的行号。 ps:有些网友反映说装不上,经本人测试,完全可以使用的,装不上的朋友请检查自己的VC是否正确安装,必要的话,可以...
简单的VC 拾色器 选取颜色,在下拉框中显示颜色,每一种颜色一个条目,基于SelectedColor实现,这是个比较简单的例子。