1 から 20 の範囲の 4 つの乱数を同じでなくても与えるプログラムを作成したいと考えています。それは私に4つの異なる乱数を与えますが、2回の試行ごとに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
それを避けるために追加しました。このコードは間違っていますか、それとも私の理解がひどいですか?