![]() |
|
![]() ![]() ![]() |
|
InfMag |
|
|||
… ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1037 Регистрация: 21.11.2004 Репутация: 1 Всего: 4 |
Я вот помню такое дело:
Но числа генерируются именно от нуля и подсчет полной случайности доходит только до секунд. А мне нужно, чтобы юзать от определенного числа до другого определенного и с точностью до миллисекунд. ![]() |
|||
|
||||
_hunter |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 8564 Регистрация: 24.6.2003 Где: Europe::Ukraine:: Kiev Репутация: 24 Всего: 98 |
ну и юзай RandomRange()
( только при чем тут время? ) -------------------- Tempora mutantur, et nos mutamur in illis... |
|||
|
||||
NoeR |
|
|||
Бывалый ![]() Профиль Группа: Участник Сообщений: 233 Регистрация: 6.2.2005 Репутация: нет Всего: нет |
Я тоже ниче не понял, но может тебе надо от 1 до 60?
Тогда так:
--------------------
По факту пропажи мужа, возбуждено... Два соседа.Если у Вас проблемы с ребенком, спросите у жены, может, это не Ваши проблемы!>>> NoeR++ <<< |
|||
|
||||
InfMag |
|
|||
… ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1037 Регистрация: 21.11.2004 Репутация: 1 Всего: 4 |
_hunter
Время играет самую важную роль якобы случайности. Компьютер работает строго по математическим расчетам и сгенерировать случайное число он никак не может. А случайное число - это означает время поносилованное по формуле... Вобщем думаю вы поймете... ![]() В PHP есть функция mt_rand() и вней можно указывать время для формулы. Вобщем в ней важно то, что она генерирует точно случайные числа и от пределенных чисел. Типа mt_rand(25, 55) Теперь понятно? ![]() |
|||
|
||||
Амортизатор |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 297 Регистрация: 17.4.2005 Где: в Караганде Репутация: нет Всего: 8 |
Говорю как бывший физик. Вообще полностью случайные числа существуют только в учебниках по теории вероятности
![]() -------------------- Поехали! |
|||
|
||||
InfMag |
|
|||
… ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1037 Регистрация: 21.11.2004 Репутация: 1 Всего: 4 |
Амортизатор
Да блин! Ты как не втыкаешь? Полностью случайными числа на компе считаются расчитанными по формуле с точностью до миллисекунд. Все, пошел искать в просторах. |
|||
|
||||
InfMag |
|
|||
… ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1037 Регистрация: 21.11.2004 Репутация: 1 Всего: 4 |
А надо было сразу юзать сарч:
http://forum.vingrad.ru/index.php?showtopic=35266 Совсем то, что я хотел увидеть, не увидел. В си наверно нет такой функции. Буду писать свою. ![]() |
|||
|
||||
Амортизатор |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 297 Регистрация: 17.4.2005 Где: в Караганде Репутация: нет Всего: 8 |
Кстати, я использую функцию random(int), в ней непредсказуемости как в табуретке. При каждом запуске практически одно и то же. Как добыть нормальную функцию?
-------------------- Поехали! |
|||
|
||||
_hunter |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 8564 Регистрация: 24.6.2003 Где: Europe::Ukraine:: Kiev Репутация: 24 Всего: 98 |
ты в этом уверен? точнее ты знаеш какую именно оно роль играет? ( а не самую важную ) функцию для получения случайного числа на промежутке я тебе написал. напиши чем она тебя не устраивает ( с аргументами ) -------------------- Tempora mutantur, et nos mutamur in illis... |
|||
|
||||
NoeR |
|
|||
Бывалый ![]() Профиль Группа: Участник Сообщений: 233 Регистрация: 6.2.2005 Репутация: нет Всего: нет |
Разве практически? ![]() --------------------
По факту пропажи мужа, возбуждено... Два соседа.Если у Вас проблемы с ребенком, спросите у жены, может, это не Ваши проблемы!>>> NoeR++ <<< |
|||
|
||||
InfMag |
|
||||||
… ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1037 Регистрация: 21.11.2004 Репутация: 1 Всего: 4 |
Амортизатор
Напиши, например в OnCreate программы:
И вот функция:
Если пишем:
то возвращает либо 5, либо 6, либо 7, либо 8, либо 9 и либо 10. |
||||||
|
|||||||
_hunter |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 8564 Регистрация: 24.6.2003 Где: Europe::Ukraine:: Kiev Репутация: 24 Всего: 98 |
а ты что хотел???
-------------------- Tempora mutantur, et nos mutamur in illis... |
|||
|
||||
InfMag |
|
|||
… ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1037 Регистрация: 21.11.2004 Репутация: 1 Всего: 4 |
_hunter
Я эту функцию только что написал. Это я и хотел. ![]() |
|||
|
||||
_hunter |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 8564 Регистрация: 24.6.2003 Где: Europe::Ukraine:: Kiev Репутация: 24 Всего: 98 |
а при чем точность до миллисекунд?
-------------------- Tempora mutantur, et nos mutamur in illis... |
|||
|
||||
InfMag |
|
|||
… ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1037 Регистрация: 21.11.2004 Репутация: 1 Всего: 4 |
_hunter
Точность расчета случайности по формуле. Вот возьми:
Если ты в течении этой же секунды снова запросишь рандом, то он вывелет тоже число. ЗЫ: Серьезно: ты вобще чтоль никаких представлений не имеешь о случайности чисел в компьютере? ![]() Добавлено @ 17:16 ИМХО: ![]() |
|||
|
||||
NoeR |
|
||||
Бывалый ![]() Профиль Группа: Участник Сообщений: 233 Регистрация: 6.2.2005 Репутация: нет Всего: нет |
InfMag
Это у тебя компьютер глючит! Числа полностью и еще раз полностью разные!
Полученные данные в мемо1:
Ну, давай, что еще умного скажешь? Ты видел код на асме, который рандом делает, доставая время, что так выделываешься о том, что ты хорошо в этом разбираешься? Ты не подумал что там еще пару десятков строчек кода, а не одна как у тебя, которая это время извращенно размножает… --------------------
По факту пропажи мужа, возбуждено... Два соседа.Если у Вас проблемы с ребенком, спросите у жены, может, это не Ваши проблемы!>>> NoeR++ <<< |
||||
|
|||||
InfMag |
|
|||
… ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1037 Регистрация: 21.11.2004 Репутация: 1 Всего: 4 |
NoeR
Хм. Не знал. Просто ты в цикле все время вызываешь Randomize(); и видимо он все время запрашивает время. ЗЫ: Умным хочу показаться не я, а - ты. Ты говоришь, что я хочу показаться умным, а я говорю ту теорию, которую знаю и пытаюсь доказать очевидное. А зачем мне казаться умным и с какой целью? Ведь я прихожу на форум за вопросами и если что-то знаю, то пытаюсь помочь, а в данный момент ты делаешь так, чтобы я не впихивал сюда своего мнения aka не помогал. |
|||
|
||||
InfMag |
|
|||
… ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1037 Регистрация: 21.11.2004 Репутация: 1 Всего: 4 |
Вот и без лишних OnCreate'ов...
NoeR Видишь, на этот раз я изменил свои понятия об этой функции, потом что ты пролил свет на очевидное. ![]() Это сообщение отредактировал(а) InfMag - 18.5.2005, 18:04 |
|||
|
||||
NoeR |
|
||||
Бывалый ![]() Профиль Группа: Участник Сообщений: 233 Регистрация: 6.2.2005 Репутация: нет Всего: нет |
Я не люблю людей, которые, не проверяя что-то, делают и гонят на безобидную функцию рандом. И ИМХО своим ответам, я ни в одном кусочке не показал того, что я умный, я просто помогаю тебе же понять то, что ты ошибаешься, вот и все
![]()
Полученные данные:
Добавлено @ 18:09 Кстати твоя функция использует рандом так или иначе, и твоя формула, ничего не делает - абсолютно, она ничем не помогает рандому сделать случайное число... --------------------
По факту пропажи мужа, возбуждено... Два соседа.Если у Вас проблемы с ребенком, спросите у жены, может, это не Ваши проблемы!>>> NoeR++ <<< |
||||
|
|||||
_hunter |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 8564 Регистрация: 24.6.2003 Где: Europe::Ukraine:: Kiev Репутация: 24 Всего: 98 |
я то представление имею...
а ты кажись нет. ты, например, знаеш что от времени зависит только первый вызов ( потому ка инициализируется генератор ( randomixe() ) а остальные числа генерятся на основе предыдущих? + тебя это может удивит, но Randomize(); не инициализирует random() его нужно инициализировать randomize() -------------------- Tempora mutantur, et nos mutamur in illis... |
|||
|
||||
InfMag |
|
|||
… ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1037 Регистрация: 21.11.2004 Репутация: 1 Всего: 4 |
_hunter
Но первое то обращение все равно юзает время. А Randomize() и randomize() одно и тоже. Слушайте, давайте не будем драться. Вы просто сразу мне не показали, что эта функция действительно лучше. Не зачем создавать проблему из-за мелочи. |
|||
|
||||
NoeR |
|
|||
Бывалый ![]() Профиль Группа: Участник Сообщений: 233 Регистрация: 6.2.2005 Репутация: нет Всего: нет |
А ты не знал что ли?
![]() Кстати в этом топике других функций я не вижу, поэтому показывать даже не на что ![]() --------------------
По факту пропажи мужа, возбуждено... Два соседа.Если у Вас проблемы с ребенком, спросите у жены, может, это не Ваши проблемы!>>> NoeR++ <<< |
|||
|
||||
_hunter |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 8564 Регистрация: 24.6.2003 Где: Europe::Ukraine:: Kiev Репутация: 24 Всего: 98 |
первое юзает, но это не имеет никакого отношения к твоей проблеме: ты писал что у тебя нет разницы между i-тым и i+1-м значениями...
Randomize() и randomize() это абсолютно не одно и то же... они из разных библиотек, как минимум. -------------------- Tempora mutantur, et nos mutamur in illis... |
|||
|
||||
InfMag |
|
|||
… ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1037 Регистрация: 21.11.2004 Репутация: 1 Всего: 4 |
_hunter
Ну вроде уже решили проблему. Вот так:
Вся фишка в том, что у функции random(100) будет выдаваться от 0 до 99, а мне нужно было от 0 до 100, причем не только так, но чтобы еще можно было указать от 50 до 100. Проблема решена. ![]() |
|||
|
||||
NoeR |
|
|||
Бывалый ![]() Профиль Группа: Участник Сообщений: 233 Регистрация: 6.2.2005 Репутация: нет Всего: нет |
Ё-моЁ... а ты меня слушаешь?
Я же сказал: random(51)+50; //Выдаст от 50 до 100! От 0 до 100:random(101) вот и все, твой код больше памяти хавает, чем надо... (Помогаю оптимизировать и не писать лишнего... Отвечать не обязательно) --------------------
По факту пропажи мужа, возбуждено... Два соседа.Если у Вас проблемы с ребенком, спросите у жены, может, это не Ваши проблемы!>>> NoeR++ <<< |
|||
|
||||
codelord |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 777 Регистрация: 7.5.2005 Где: ты моя темноглаза я где?! Репутация: 16 Всего: 39 |
......................................................sorry отвечал на первом листе
Это сообщение отредактировал(а) codelord - 18.5.2005, 21:00 |
|||
|
||||
_hunter |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 8564 Регистрация: 24.6.2003 Где: Europe::Ukraine:: Kiev Репутация: 24 Всего: 98 |
InfMag, а чем твоя функция отличается от приведеной мной сколько-то постов назад RandomRange()?
![]() -------------------- Tempora mutantur, et nos mutamur in illis... |
|||
|
||||
Guest |
|
|||
Unregistered |
![]() |
|||
|
||||
Dubinsky |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 252 Регистрация: 1.6.2005 Репутация: нет Всего: нет |
Ну вообщем есть у Рандома реиницилизатор (srand(int)) берем и в качестве аргумента указываем (ну например) текущий тик процессора умноженный на напряжение АГП слота деленный на обороты кулера в степени версии Виндовса минус объём харда ... и так до бесконечности .
после берём рандом и пусть кто то мне просчитает какой он будет в определённое время ? ну и как ? вы увидите в этом зависимость ? ну ну ... |
|||
|
||||
NewDracon |
|
|||
Unregistered |
Не понял до конца о чем вы спорите, но у меня даже после Randomize() выдавались одинаковые числа
![]() долго мучился (нужно было очень) и вот код где-нибудь в начале:
выдаются что ни на есть рандомно! ![]() |
|||
|
||||
Dubinsky |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 252 Регистрация: 1.6.2005 Репутация: нет Всего: нет |
специально повторю хелп :
случайные числа должны как то инициализироватся , если нет он выдаёт всегда и везде ОДНУ И ТУ ЖЕ ПОСЛЕДОВАТЕЛЬНОСТЬ СЛУЧАЙНЫХ чисел ! это отладочный режим рандома ! чтобы в программе можно было следить за глюками , если они возникают при определённом случайном числе (ну например выход за пределы списка каким то случайным числом) то если диапазон случайных чисел большой , дождатся следующего глюка при следующем запуске будет трудно (да и глюк будет появлятся в разное время) , а так всё время одинаковый ряд , глюк будет возникать в одно и то же время в одних и тех же условиях. во время отладки инициализация отрубается (ну там командой препроцессора) а в релизе врубается. |
|||
|
||||
p0s0l |
|
|||
![]() Г-н Посол ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 3668 Регистрация: 13.7.2003 Где: 58°38' с.ш. 4 9°41' в.д. Репутация: нет Всего: 112 |
Вызывать Randomize в цикле перед каждым Random-ом не нужно, т.к. это портит распределение случайной величины; не известно, какие свойства будут у такого распределения. Ну и во-вторых, не известно как сработает Randomize, т.е. каким способом он получает время ? Таймеры изменяют своё значение в дискретные моменты времени, и если период этот большой, то может получиться так, что последовательный вызов нескольких Randomize выдаст одни и то же значения, а значит, и Random тоже выдаст абсолютно одинаковые числа...
Например, в Delphi реализация Randomize выглядит следующим образом (в Builder скорее всего также): вызывается QueryPerformanceCounter, если результат нулевой, то вызывается GetTickCount. Как видно, есть вероятность того, что будет работать GetTickCount (правда не знаю, в каких случаях не сработает QueryPerformanceCounter), в этом случае мы получим огромное количество одинаковых идущих друг за другом чисел... Поэтому правильнее 1 раз вызвать Randomize, а потом просто вызывать Random... -------------------- С уважением, г-н Посол. |
|||
|
||||
InfMag |
|
||||
… ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1037 Регистрация: 21.11.2004 Репутация: 1 Всего: 4 |
Да! Да! Народ, я написать забыл. Чтобы о Randomize(); и randomize(); не говорили они не помогают!
Если написать Randomize(); один раз, то числа будут выдаваться случайно, но проблема исходит от того, что обновление хэша времени происходит тока раз в секунду. Я сделал примерчик, тыкаю на кпопку... Вобщем интервал между обновления числа равен ЦЕЛОЙ СЕКУНДЕ!!! А что если операция вызывается перетасовкой через цикл? Юзать таймер на одну секунду и ждать пока програ проделает действия с этим Randomize();?! Просто смех! Вот как написал я и у меня все идеально работает:
Вот так все работает у меня тик так. Один раз зделал и больше не насиловал Randomize(); А те люди, которые его так и юзали, наверно уже много глючных проектов наделали ![]() Добавлено @ 10:56 Сорри, у меня форма не стандартно называется... ![]()
|
||||
|
|||||
![]() ![]() ![]() |
Правила форума "С++ Builder" | |
|
Запрещается! 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Rrader. |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | C++ Builder | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |