我想制作一个程序,它会给我 4 个 1 - 20 范围内的随机数,而它们中的任何一个都不相同。它确实给了我 4 个不同的随机数,但每两次尝试 2 个数字都是相同的。我不想那样。这是我的代码:
int main(){
int g;
srand(time(0));
start:;
scanf("%d",&g);
switch(g){
case 1:RNG_4_10();
break;
default:exit(0);
break;
}
goto start;
}
int RNG_4_10(){
int a,n,i,c;
for(c=0;c<10;c++){
printf("\n");
for(i=0;i<4;i++){
a = (rand() % 20 + 1); //give a random value to a;
n = a; //assign n the value of a;
while(a == n){
a = rand() % 20 + 1;
}
printf("%d\t",a);
}
}
}
另外,我知道 RNG 有重复数字的概率,理论上它们可以为无穷大生成相同的数字,但我不知道如何在同一次运行中获得 2 个相似的数字。我补充说while
以避免这种情况。这段代码是错误的还是我的理解很糟糕?