Программирование на языке си ( с ) | C Sharp (Си шарп) с нуля. Сортировки | Массивы | Функции

Генератор случайных чисел >> random | srand | rand в си ( с )

   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. Ну и давайте рассмотрим примерчик для наглядности:

  1. У нас есть 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.

Рекомендую:

  1. Учебники по программированию на языке си ( рекомендации )
  2. Директивы препроцессора ( компилятора ) в языке си — include | define
  3. Алгоритмы сортировки — Метод Прямого Включения | Пузырьковая Сортировка
При копировании ( использовании ) материала размещайте ссылку на сайт www.mir-koda.ru