LINUX.ORG.RU

История изменений

Исправление EXL, (текущая версия) :

Да, один раз. Я применил его два раза чисто от отчаяния.

Ты Randomize изначально применял потому что не в том месте.

Но только почему Randomize внутри функции во-первых мешал Randomize в основном теле программы, а во-вторых ничего толком не делал если его «конкурента» в теле программы не было?

Тебе же выше объяснили, что в твоём случае инициализацию генератора псевдорандомных чисел нужно выполнять один раз, сразу после запуска программы (после Begin). Ты же выполнял её каждый раз при вызове функции.

$ cat Random.c 
#include <stdlib.h>
#include <stdio.h>
#include <time.h>

int getRandomNumber(void) {
    srand(time(0));
    return rand() % 100 + 1;
}

int main(void) {
    srand(time(0));
    int i = 0;
    for (; i < 10; ++i) printf("%d\n", getRandomNumber());
    return 0;
}
$ gcc Random.c 
$ ./a.out 
14
14
14
14
14
14
14
14
14
14
$ cat Random.c 
#include <stdlib.h>
#include <stdio.h>
#include <time.h>

int getRandomNumber(void) {
//  srand(time(0));
    return rand() % 100 + 1;
}

int main(void) {
    srand(time(0));
    int i = 0;
    for (; i < 10; ++i) printf("%d\n", getRandomNumber());
    return 0;
}
$ gcc Random.c 
$ ./a.out 
31
28
57
42
34
58
93
95
68
45

Так понятно?

Исходная версия EXL, :

Да, один раз. Я применил его два раза чисто от отчаяния.

Ты Randomize изначально применял потому что не в том месте.

Но только почему Randomize внутри функции во-первых мешал Randomize в основном теле программы, а во-вторых ничего толком не делал если его «конкурента» в теле программы не было?

Тебе же выше объяснили, что инициализацию генератора рандомных чисел нужно выполнять один раз, сразу после запуска программы (после Begin). Ты же выполнял её каждый раз при вызове функции.

$ cat Random.c 
#include <stdlib.h>
#include <stdio.h>
#include <time.h>

int getRandomNumber(void) {
    srand(time(0));
    return rand() % 100 + 1;
}

int main(void) {
    srand(time(0));
    int i = 0;
    for (; i < 10; ++i) printf("%d\n", getRandomNumber());
    return 0;
}
$ gcc Random.c 
$ ./a.out 
14
14
14
14
14
14
14
14
14
14
$ cat Random.c 
#include <stdlib.h>
#include <stdio.h>
#include <time.h>

int getRandomNumber(void) {
//  srand(time(0));
    return rand() % 100 + 1;
}

int main(void) {
    srand(time(0));
    int i = 0;
    for (; i < 10; ++i) printf("%d\n", getRandomNumber());
    return 0;
}
$ gcc Random.c 
$ ./a.out 
31
28
57
42
34
58
93
95
68
45

Так понятно?