谢春祥,张兆亮
(蚌埠学院,安徽蚌埠233030)
规定范围内一定数量的随机数的产生在生产研究中有着广泛的应用.通常的随机数产生方法是重复进行生成操作,直到产生足够数量的随机数为止.并且为了防止重复,还要不断扫描对比己经生成的随机数.这样效率很低,而且可能陷入死循环(一直产生不了合格的随机数,程序持续空转)[1-6].本文提出通过“下标填充补尾法”,可以有效解决通常方法的弊端,达到高效可靠的目的.
要生成符合要求的随机数,通常都是先产生一般的随机数,再通过特定的方法从中挑选所需要的数.普通随机数的产生常用的rand()函数实现,例如,要生成一个值在区间[1,N]内的随机数R,代码如下:
srand((unsigned)time(NULL));
R=rand()%(N+1);
第1行代码是给随机数函数赋一个种子值,以便随机函数在此基础上递推出随机数来.这里用不断变化的计算机时间做种子.在第2行代码里,由rand()函数产生一个随机数.但由于rand()的返回值在0~327 67之中(一个short整型数值的范围),所以当N值小于327 67时,就要将返回值模(N+1)取余,以使值的范围一定落在[1,N]中.如果要取的随机数值大于327 67,则可由多个rand()的返回值进行线性叠加获得[2].一定范围内随机数产生了,下面着重探讨如何产生规定数量的随机数.
假设要产生M个值在区间[1,N]的随机数.常用的方法就是重复执行上面所说的两行代码,直到产生M个满足条件的随机数为止[3-5].但这样做将要花费大量的时间……