ОБНОВЛЕНИЕ 2
Снова обновлено в соответствии с комментарием Interjay.
ОБНОВЛЕНИЕ
Внес изменения в комментарий Interjay. Также изменил pickChar, чтобы мы не полагались на конкретную кодировку.
Предупреждение: использование оператора %
для сопоставления результатов rand
с другим диапазоном не рекомендуется. Не гарантируется равномерное распределение битовых комбинаций младших разрядов, и вы можете получить ненормальное распределение значений. Это работает достаточно хорошо для заданий класса, но процедура ниже должна дать лучшие результаты:
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
int randInRange(int min, int max)
{
return (int)(((double) rand() / (double)(RAND_MAX + 1)) * (max - min + 1)) + min;
}
char pickChar(void)
{
char val;
int cas = randInRange(0, 1);
if (cas == 1)
val = (char) randInRange('A', 'Z');
else
val = (char) randInRange('a', 'z');
return val;
}
int main(void)
{
char results[11] = {0};
int i;
srand(time(NULL)); // seed the random number generator
for (i = 0; i < sizeof results - 1; i++)
results[i] = pickChar();
printf("Random string: %s\n", results);
return 0;
}