rand
Случайные числа, как я уже писал, используются во многих играх. Например, возьмем стандартную игру
косынка, в ней каждый раз раздача карт происходит по-разному, причем пользователь ни как не влияет на этот процесс, а
все это делает пресловутый генератор случайных чисел. Вот его синтаксис:
int i = rand();
Эта функция генерирует любое положительное число от 0 до RAND_MAX, значение которого можно
найти в подключаемом файле #include <stdlib.h>, как и саму функцию rand.
srand
Но, как ни странно, значение у на все время будет одним и тем же. Тут все дело, что случайное число генерируется,
исходя из определенных параметров. Ну, так вот, для превращения функции rand в, действительно, оператор случайных чисел,
нужно в начале программы использовать функцию srand, которая в качестве аргумента просит число. И по этому числу
уже будет генерироваться случайное число функцией rand.
Вот пример:
srand(time(NULL));
chislo = rand();
Теперь мы добились настоящей генерации случайных чисел. И каждый запуск программы будет выдавать
различные цифры (но от повторения, ни кто не застрахован)
Ну а если вам не нужен такой большой диапазон случайных чисел? И этому вопросу есть достойный момент. Вот синтаксис
регулирования диапазона чисел:
начальное значение + rand() % конечное значение
Тут объяснений не требуется. Так же можно сделать, что б случайные числа были отрицательными.
Для этого нужно начальное значение просто сделать отрицательным:
int chislo = -3 + rand() %6;
random
В С++ появилась так же новая функция random, которая расширяет диапазон значений, по сравнению с генератором случайных чисел rand.
Да и синтаксис оператора слегка другой:
начальное значение + random(значение) ;
А конечное значение = начальное значение + значение, которое пишется в операторе random.
Ну и давайте рассмотрим примерчик для наглядности:
- У нас есть 5 участников телевикторины. Они, один за одним, достают из мешка числа (от 2 до 7).
Они их достают, достают, пока не достанут число 5 (автоматом конец игры для участника). После того, как участник достал
пятерку, то ему присваивается общая сумма вытянутых чисел. Побеждает тот, у кого сумма очков будет наибольшей.
#include <conio.h>
#include <stdio.h>
#include <time.h>
#include <stdlib.h>
int main()
{
int player[5];
int sum = 0, rand_chislo;
srand(time(NULL));
for (int i = 0; i <5 ; ){
rand_chislo = 2 + rand() %7;
sum += rand_chislo;
if (rand_chislo == 5){
player[i] = sum;
sum = 0;
i++;
}
}
for (int i = 0; i <5 ;i++ ){
printf ("Player[%d] - %d\n",i, player[i]);
}
getch();
return 0;
}
Все рассказал, показал и привел практические примеры. Так что тема «Генератор случайных чисел» должна быть понята вами в полной мере.
Попробуйте сами так же понабирать различные программы с использованием генератора случайных чисел с функциями rand | srand | random.
Рекомендую:
- Учебники по программированию на языке си ( рекомендации )
- Директивы препроцессора ( компилятора ) в языке си — include | define
- Алгоритмы сортировки — Метод Прямого Включения | Пузырьковая Сортировка
|