Это мой код:
#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));
перед циклом, он генерирует разные числа! почему это так? как работает эта программа?
man srand
или даже гугл? - person John3136   schedule 21.10.2015time(NULL)
, вероятно, даст вам одно и то же значение для каждой итерации вашего цикла (поскольку это секундная гранулярность). Таким образом, вы заполняете одно и то же значение и сбрасываете последовательностьrand
с каждым вызовомsrand
. Нет необходимости постоянно вызыватьsrand
. - person kaylum   schedule 21.10.2015srand()
меняет числовую последовательность. - person John3136   schedule 21.10.2015srand
сбрасывает последовательность каждый раз, когда она вызывается. Таким образом, с одним и тем же семенем последовательностьrand
будет каждый раз одинаковой. - person kaylum   schedule 21.10.2015