+ Ответить в теме
Показано с 1 по 8 из 8

Тема: Принцип генерации случайных чисел

  1. #1
    ][ce
    Guest

    Question Принцип генерации случайных чисел

    Расскажите пожалуйста кто-нить, по какому принципу генерируются случайные числа. Вообще в любом языке программирования, не только в С. А то я всегда считал, что генерация завязана на системный таймер, но преподаватель сказал, что это не правильно. На лекциях нам вроде такого не давали... Мне это нужно для защиты лабы. Ps Я еще читал что для этого используется определенная формула, хз.

  2. #2
    Кандидат в умники JiF Включаюсь JiF Включаюсь JiF Включаюсь
    Регистрация
    20.05.2005
    Сообщений
    420
    Поблагодарил(а)
    0
    Получено благодарностей: 14 (сообщений: 9).

    По умолчанию

    Про случайные числа в C посмотри на сайте http://algolist.manual.ru/ и ещё можно тут: http://alglib.sources.ru/random/...

  3. #3
    Ветеран nobody Набираю обороты nobody Набираю обороты nobody Набираю обороты nobody Набираю обороты nobody Набираю обороты nobody Набираю обороты nobody Набираю обороты Аватар для nobody
    Регистрация
    03.06.2005
    Адрес
    Lost in Space...
    Возраст
    41
    Сообщений
    1,126
    Поблагодарил(а)
    19
    Получено благодарностей: 161 (сообщений: 101).

    По умолчанию

    Вот хороший ликбез: http://ru.wikipedia.org/wiki/Генерат...лучайных_чисел

    А вот генератор, который используется в C:

    Код:
    #define RAND_MAX 32767
     
    unsigned long next=1;
     
    int rand(void) {
     next=next*1103515245+12345;
     return((unsigned int)(next/65536)%32768);
    }
     
    void srand(unsigned int seed) {
     next=seed;
    }

  4. #4
    ][ce
    Guest

    По умолчанию

    Спасибо большое, но в конце концов оно мне понадобилось только для общего развития.

  5. #5
    aSj
    Guest

    По умолчанию

    По настоящему умные генераторы случайных чисел предназныченные для криптографии (типа фревого srandomdev) завязаны... на все ;) Точнее, на все откуда можно добывать случайность. На твои нажатия на клавиши. На прерывания от hdd. На прерывания от сетевухи. Все это влияет на генеримое число. Более того, хорошие рандом генераторы при выключении компьютера сохраняют случайность в файл при перезагрузке и инициализируют ей генератор при запуске оси.

  6. #6
    Юзер BJay кто это? Аватар для BJay
    Регистрация
    09.09.2006
    Адрес
    From The Inside
    Возраст
    36
    Сообщений
    62
    Поблагодарил(а)
    1
    Получено благодарностей: 2 (сообщений: 2).

    По умолчанию

    Я слышал, что все гениально просто - берется элементарно время (именно то, что у тебя в правом нижнем углу) и по тупой формуле перегоняется в простое число... Хз.
    Название статьи в газете:
    Запад оттянет конец российской демократии

  7. #7
    Ветеран nobody Набираю обороты nobody Набираю обороты nobody Набираю обороты nobody Набираю обороты nobody Набираю обороты nobody Набираю обороты nobody Набираю обороты Аватар для nobody
    Регистрация
    03.06.2005
    Адрес
    Lost in Space...
    Возраст
    41
    Сообщений
    1,126
    Поблагодарил(а)
    19
    Получено благодарностей: 161 (сообщений: 101).

    По умолчанию

    это простейший способ генерирования псевдослучайного числа... а методов очень много.

  8. #8
    aSj
    Guest

    По умолчанию

    Цитата Сообщение от BJay Посмотреть сообщение
    Я слышал, что все гениально просто - берется элементарно время (именно то, что у тебя в правом нижнем углу) и по тупой формуле перегоняется в простое число... Хз.
    Для детишковых задач этого может быть достаточно. Но это, ессно, фигня. А на любителей пользовать такие тупые алгоритмы в важных местах (типа tcp/ip стека) всегда найдется проруха.
    Рекомендую почитать, второй том кнута, там целая глава этому посвящена. Уж хотябы начальный ликбез ОБЯЗАН прочитать любой программер. Читать ли дальше - это уже ваше дело, но ликбез mustread. Чтобы если они вам вдруг понадобятся вы не оставили часть своих мозгов на этих боянских граблях.

    Добавлено через 1 час 19 минут
    Цитата Сообщение от nobody Посмотреть сообщение
    А вот генератор, который используется в C:
    Если точнее, использовался раньше ;)
    Последний раз редактировалось aSj; 16.01.2007 в 05:27. Причина: Добавлено сообщение

+ Ответить в теме

Информация о теме

Пользователи, просматривающие эту тему

Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)

     

Ваши права

  • Вы не можете создавать новые темы
  • Вы не можете отвечать в темах
  • Вы не можете прикреплять вложения
  • Вы не можете редактировать свои сообщения
Рейтинг@Mail.ru
Администрация сайта не выражает согласия
с высказыванием участников форума и не несет
ответственности за их содержание.

Копирование любого материала возможно только
при наличии ссылки на сайт.