Добрый вечер. Есть функции которая генерирует случайную строку. Работает на отлично. Но если запустить ее несколько раз подряд то будем получать одинаковую строку. И я даже понимаю почему так происходит.
#include <stdlib.h>
#include <time.h>
#include <stdio.h>
const char hex_character[2][17] = {"0123456789abcdef","0123456789ABCDEF"};
void hex_random(int salt_len, char *output, int uppercase) {
int i;
srand((unsigned)time( NULL ));
for(i = 0; i < salt_len; i++) {
output[i] = hex_character[uppercase][rand() % 16];
}
output[salt_len] = 0;
}
int main(){
int rand_len = 32;
char t1[rand_len + 1];
char t2[rand_len + 1];
hex_random(rand_len, t1, 0);
hex_random(rand_len, t2, 0);
fprintf(stderr, "%s\n%s\n", t1, t2);
return 0;
}
Если изменить конструкцию
srand((unsigned)time( NULL ));
На
srand((unsigned)clock());
функция начинает работать как нужно, но везде где я натыкался на такой пример он был заминусован.
Собственно вопрос, как правильно получить рандомную строку и чем последный вариант плох?
Спасибо!