| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > C/C++: Общие вопросы > Как работает random() или rand() |
| Автор: ano360 16.1.2007, 21:04 |
| Как работает random() или rand() каким образом генерируют случайные числа Просто для расширения кругозора интересно было бы узнать, каким образом компьютор модет выдать случайное число. Откуда он его бкрёт. Там кажется что-то со времяем связано |
| Автор: Daevaorn 16.1.2007, 21:16 |
Они псевдо случайны, и вычисляются на основе формулы с некоторым начальным значением, которое может быть как функция времени. есть несколько алгоритмов. http://en.wikipedia.org/wiki/Random_number_generator |
| Автор: Romikgy 16.1.2007, 22:46 | ||||||||
по крайней мере в билдере
вот реализация _lrand (т.к. работа идет с двойными словами, мя схарило переводить на си)
все колы (ф_ции) идут сюда (смысл их я не понял
|
| Автор: KpoHyc 17.1.2007, 00:08 | ||
вот пример работы рандома:
|
| Автор: ano360 17.1.2007, 16:43 | ||||||||
Немного понятно
К сожалению английским владею плохо Romikgy-и асемблера я тоже не знаю
Можно поподробней смысл этого кода. в часности строку (z>>10)&0x7fff;
|
| Автор: Romikgy 17.1.2007, 16:56 |
| надеюсь , хоть что такое шестнадцатиричные числа ты знаешь что это. есть переменая z которая имеется одна грубо говоря в твоей проге и отвечает за генератор случ. чисел так вот при твоей просьбе дать те число случайное происходят такие действия число зет умножается на и после этого к нему добавляется единица далее для получения ответа мы сдвигаем число зет на 10 битов вправо и делаем логическое и с ниже приведеным числом все эти сдвиги и логические операции нужны для того чтобы ответ те был дан в пределах разумного числа! (по разрядности) |
| Автор: ano360 23.1.2007, 18:41 |
| Romikgy-круто |
| Автор: nworm 23.1.2007, 18:45 |
| По аналогии с соседней темой вот тут все в полном объеме: Дональд Э. Кнут Искусство программирования том 2 |
| Автор: PoloS 23.1.2007, 18:57 | ||
начало =) ЗЫ. Плагиат |
| Автор: BobiKK 23.1.2007, 18:59 |
| http://ru.wikipedia.org/wiki/%D0%93%D0%B5%D0%BD%D0%B5%D1%80%D0%B0%D1%82%D0%BE%D1%80_%D0%BF%D1%81%D0%B5%D0%B2%D0%B4%D0%BE%D1%81%D0%BB%D1%83%D1%87%D0%B0%D0%B9%D0%BD%D1%8B%D1%85_%D1%87%D0%B8%D1%81%D0%B5%D0%BB |
| Автор: Romikgy 23.1.2007, 20:17 |
| имхо спрашивали как работает стандартное , а не как написать свое |
| Автор: PoloS 23.1.2007, 20:31 | ||
Просто для расширения кругозора интересно было бы узнать, каким образом компьютор модет выдать случайное число. Откуда он его бкрёт. Там кажется что-то со времяем связано |
| Автор: Romikgy 23.1.2007, 21:33 | ||
|
| Автор: W4FhLF 24.1.2007, 14:09 |
| Да это стандартный линейный конгруэнтный метод, чё тут обсуждать Каждое следующее значение будет зависеть от предыдущего "сгенерированного" значения(начальное значение задаётся значением seed). |