2015-11-18 4 views
-1

Я заметил, что если бы я использовал rand() для генерации случайных значений внутри цикла, это изменит значение на каждой итерации. Однако это не так для вызовов функций даже путем посева через srand().rand() не обновляет значения между вызовами функций

#include <stdio.h> 
#include <stdlib.h> 
#include <math.h> 
#include <time.h> 
#include <string.h> 

void test(){ 
    float r; 

    srand(time(NULL)); 
    r = (double)rand()/(double)RAND_MAX; 
    printf(" %6.3f \n",r); 
} 
int main(){ 

    float r; 
    //srand(time(NULL)); 
    for(int i=0;i<5;i++){ 
     test(); 
     //r = (double)rand()/(double)RAND_MAX; 
     //printf(" %6.3f \n",r); 
    } 

} 

Как я могу заставить rand() обновить свои значения в каждом вызове функции?

+5

Семя один раз за программу, только. Переместите 'srand' в' main' как одну из первых строк (не внутри цикла!). Я могу видеть из вашей пропущенной строки, что вы намеревались в какой-то момент. – MicroVirus

+0

Хммм Я прошу прощения за этот глупый вопрос. Ты прав. Я должен был быть более осторожным – Mike

+0

@MicroVirus вы должны добавить ответ с этим, он, скорее всего, поможет другим, которые пытаются использовать 'rand()' – Cristik

ответ

1

Семя один раз за программу, только. Переместите srand в main как одну из первых строк (не внутри цикла!). Я могу видеть из вашей пропущенной строки, что вы намеревались в какой-то момент.

Смежные вопросы