Аппаратное обеспечение персонального компьютера




Программа RANDOM


Последнее, что мы сделаем с таймером - научимся получать от него случайные числа.

Для генерации случайных чисел лучше всего использовать канал 2 в режиме 3. В регистр счетчика канала мы занесем значение, равное диапазону нужных нам случайных чисел. Например, если мы запишем в регистр число 80 и запустим канал таймера, получаемые случайные числа будут лежать в диапазоне от 0 до 79.

Программа RANDOM (листинг 5.4) получает случайные числа и отображает их в наглядном виде с помощью столбчатой диаграммы.

Листинг 5.4. Файл random\random.с

// =====================================================

// Генерация случайных чисел

//

// (C) Фролов А.В, 1997

//

// E-mail: frolov@glas.apc.org

// WWW:    http://www.glasnet.ru/~frolov

//            или

//         http://www.dials.ccas.ru/frolov

// =====================================================

#include <stdio.h>

#include <conio.h>

#include <dos.h>

void rnd_set(int bound);

int rnd_get(void);

int main(void)

{

  int i, j;

  printf("\nГенератор случайных чисел."

    "\nНажмите любую клавишу,"

       "\nдля завершения работы нажмите <Control+C>"

       "\n");

  for(;;)

  {

    // Устанавливаем диапазон генерации случайных

    // чисел и инициализируем таймер

    rnd_set(80);

    // Ожидаем нажатия клавиши

    getch();

    // После нажатия на клавишу получаем

    // случайное число

    j = rnd_get();

    // Выводим на экран строку символов "-",

    // длина которой равна полученному случайному числу

    for(i=0; i < j; i++)

      putchar(219);

    printf("\n");

  }

  return 0;

}

/**

*.Name         rnd_set

*.Title        Инициализация генератора случайных чисел

*

*.Descr        Эта функция инициализирует канал 2 таймера

*              для использования в качестве генератора

*              случайных чисел

*

*.Proto        void rnd_set(int bound)




Содержание  Назад  Вперед