![]() |
|
Модераторы: Poseidon, Snowy, bems, MetalFan |
![]()
|
|
| kuvshinka |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 386 Регистрация: 27.4.2008 Репутация: нет Всего: нет |
пож-та подскажите (дайте код) хороший генератор случайных чисел в диапазоне [0;1]
|
|||
|
||||
| Exai1e |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 908 Регистрация: 3.12.2006 Где: Moscow Репутация: 2 Всего: 30 |
а что по вашему мнению хороший генератор ? random не устраивает ?
-------------------- "Решение зависит от выбранного геморроя" © Snowy "у нас как в армии - либо работает, либо так и задумано" |
|||
|
||||
| Beltar |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 627 Регистрация: 11.1.2006 Репутация: 3 Всего: 7 |
ЧистА случайнА у Actuba в блоге наткнулся на ссылку на книжку по фундаментальным алгоритмам применительно к Delphi, там так же рассматривался вопрос генерации случайных чисел. Если вас не устраивает генератор Delphi (ну поделите Randon(X)/X получите дроби от 0 до 1 в чем проблема-то?) Можете покурить ее. http://delphist.ru/wp-content/uploads/Backnell.rar Это быстро отобьет желание изобретать велосипед. Всего 38 метров в архиве.
Это сообщение отредактировал(а) Beltar - 29.4.2008, 07:27 -------------------- Опытный программист на C++ легко решает любые не существующие в Паскале проблемы. Пищущий на C++ мужик. Даже если это мужик сидит в написанном на Delphi и жрущем паскалевскую библиотеку билдере. |
|||
|
||||
| Poseidon |
|
||||
![]() Delphi developer ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 5273 Регистрация: 4.2.2005 Где: Гомель, Беларусь Репутация: 53 Всего: 133 |
-------------------- Если хочешь, что бы что-то работало - используй написанное, если хочешь что-то понять - пиши сам... |
||||
|
|||||
| mmvds |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 230 Регистрация: 22.12.2007 Репутация: нет Всего: 6 |
Rand(n+1)=((a*Rand(n)*(m-1)+c)(mod m))/(m-1)
(m-1) кол-во чисел в диапазоне от 0 до 1 чем больше, тем медленнее работает генератор Rand(1) - первое значение генератора- можешь задать сам, можно через стандартный рэндом сгенерировать диапазон от 0 до 1 a, c - свободные коэффициенты, можно тоже задать жестко или для пущей надежности рэндомом делать, a, c лучше брать не большими, чем они больше, тем медленнее генерируются числа. По сути это тот же паскалевский генератор, но в паскале они генерируются 1 раз для всех последовательностей, если без randomize и 1 раз для 1 последовательности, если с randomize, а тут все параметры можно задать самому, или генерировать их каждый раз через стандартный рэндом. Правда данный рэндом будет работать гораздо медленнее стандартного, но это заметно только при сравнении времени на большом количестве чисел. |
|||
|
||||
| kuvshinka |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 386 Регистрация: 27.4.2008 Репутация: нет Всего: нет |
Exai1e - "хороший" генератор - генератор с равномерным распределением CD в заданном диапазоне (от 0 до 1)
|
|||
|
||||
| Poseidon |
|
|||
![]() Delphi developer ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 5273 Регистрация: 4.2.2005 Где: Гомель, Беларусь Репутация: 53 Всего: 133 |
kuvshinka, ты понимаешь что такие величины не будут абсолютно случайными, т.е. если случайно точка попала в левую часть дивпозона, то повторно ей нужно попасть в правую часть, что бы добится равномерного распределения по диапазону. А это уже будет псевдослучайная величина, т.к. мы ей говорим что нужно попасть в правую часть.
Раз уж на то пошло, то "Хороший" генератор - это генератор, который не зависет от внешних факторов. Который выдает абсолютно случайные величины. Получить такое не реально! Random таким быть не может, потому как он выдает величины из определенной последовательности. Randomize всего-лишь "сдвигает" последовательность Random в зависемости от системного времени (т.е. имеет зависемость от времени). Поэтому все же придется определить для себя, что подходит для "случайности". Если системное время подходит, то используй Randomize. Если нет, можешь привязаться к тактам процессора в момент запуска генератора, положению Земли относительно Солнца, и т.п. Это сообщение отредактировал(а) Poseidon - 29.4.2008, 10:39 -------------------- Если хочешь, что бы что-то работало - используй написанное, если хочешь что-то понять - пиши сам... |
|||
|
||||
| Esperito |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 147 Регистрация: 2.9.2007 Репутация: 1 Всего: 3 |
Random хороший.
|
|||
|
||||
![]()
|
| Правила форума "Delphi: Общие вопросы" | |
|
|
Запрещается! 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Delphi: Общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |