我正在尝试为老年之家创建一款宾果游戏。我能够使用用于扫描数组的随机数生成器来制作一个,但问题是需要很长时间(2 分钟)来搜索数组并确保没有重复的双精度数。我做了一些研究,发现 c 中称为伪随机的东西在创建时不会重复数字。但代码看起来非常复杂,所以我不愿意接受我不完全理解的东西。这引起了我的问题,是否有一种简单的方法来创建非重复随机数生成器,或者有一个可以解释随机数生成器的好解释?
很久以前,我用 C 语言编写了这个非常简单的程序,它生成 0 到 20 之间的 10 个随机数,不重复任何数字。
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#define MAX 10 //Number to be generated.
#define rangeMAX 20 //Upper limit of range.
#define rangeMIN 0 //Lower limit of range.
int main()
{
int get, c, i, arr[MAX], chk, x;
c = i = 0;
srand(time(0)); // this will ensure that every time, program will generate different set of numbers. If you remove this, same set of numbers will generated every time you run the program.
while(c < MAX)
{
get = ((rand() % (rangeMAX-rangeMIN+1)) + rangeMIN); // generate random number.
//After generating that number check if it is already in array.
for(i=0; i<=c; i++)
{
if(arr[i] == get)
{
chk = 0;
break;
}
else if(arr[i] != get)
{
chk = 1;
}
}
if(chk==1)
{
arr[c]=get;
printf("%d\n",arr[c]);
c++;
}
}
return 0;
}
希望这会有所帮助。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)