Это мой код:Как работает srand()?
#include<stdio.h>
#include<stdlib.h>
#include <time.h>
int main(){
float m, n;
printf("Enter n, m:");
scanf("%f %f", &n, &m);
int l;
l=m-n;
int i;
for(i=0; i<4; i++){
srand(time(NULL));
double r=rand();
r/=RAND_MAX;
r*=l;
r+=n;
printf("%f ", r);
}
return 0;
}
Почему он генерирует те же номера? и когда я пишу srand(time(NULL));
перед циклом, он генерирует разные числа! почему это так? как эта программа работает?
Пытались ли вы 'человек srand' или даже Google? – John3136
'time (NULL)', вероятно, даст вам одинаковое значение для каждой итерации вашего цикла (так как это секундная гранулярность). Таким образом, вы посеяны с одинаковым значением и сбрасываете последовательность 'rand' с каждым вызовом' srand'. Нет необходимости постоянно называть 'srand'. – kaylum
@kaylum Вы ответили на другой вопрос. OP спрашивает, почему 'srand()' изменяет последовательность чисел. – John3136