Как сделать, чтобы random работал в нескольких диапазонах? - C (СИ)
Формулировка задачи:
Нужно отобразить в одном массиве цифры и буквы в случайном порядке и потом использывать группировку элементов массива.
Уже на первом этапе задачи столкнулся с проблемой.
Я могу отобразить символы в массиве но только в одном диапазоне (Ascii)а надо в нескольких да еще в один массив (только буквы и цифры)
Спасибо
#include <stdio.h>
#include <stdlib.h>
int main()
{
int i;
char mas[100];
for(i=0;i<100;i=i++){
mas[ i ] =97+(122-97)*rand()/ RAND_MAX; // строчные буквы
printf("%c",mas[i]);}
return (0);
/*48+(58-48)(только цифры)*//*mas[ i ] = rand() % 26 + 'A' (еще один вариант для букв)*/
}Решение задачи: «Как сделать, чтобы random работал в нескольких диапазонах?»
textual
Листинг программы
#include <stdio.h>
char get_random_character()
{
switch( rand() % 3 )
{
case 0:
return rand() % 25 + 'a';
case 1:
return rand() % 25 + 'A';
case 2:
return rand() % 10 + '0';
}
}
int main( int argc, char ** argv )
{
srand( time(0) );
int i;
for( i = 0; i < 80; i++ )
putchar( get_random_character() );
return 0;
}
Объяснение кода листинга программы
- Включение файла стандартного ввода/вывода
- Функция get_random_character() генерирует случайный символ из заданного диапазона
- В функции используется оператор switch для определения случайного числа в диапазоне от 0 до 2
- В каждом случае функции возвращается случайное число в заданном диапазоне
- Функция main() запускает генератор случайных чисел с помощью функции srand(time(0))
- Переменная i используется для цикла, который генерирует 80 случайных символов
- Каждый символ выводится на экран с помощью функции putchar()
- Программа завершается возвратом 0 из функции main()