Randomize - своими руками, я не спрашиваю я делюсь=))

Программирование на Visual Basic, главный форум. Обсуждение тем программирования на VB 1—6.
Даже если вы плохо разбираетесь в VB и программировании вообще — тут вам помогут. В разумных пределах, конечно.
Правила форума
Темы, в которых будет сначала написано «что нужно сделать», а затем просьба «помогите», будут закрыты.
Читайте требования к создаваемым темам.
tyomitch
Пользователь #1352
Пользователь #1352
Аватара пользователя
 
Сообщения: 12822
Зарегистрирован: 20.10.2002 (Вс) 17:02
Откуда: חיפה

Сообщение tyomitch » 11.05.2005 (Ср) 15:38

kirrun писал(а):Все-равно все это не то... Вот как действует генератор ДЕЙСТВИТЕЛЬНО СЛУЧАЙНЫХ чисел? (хм.. да вообще есть такой?)
Есть и такие. Там задействуется какая-то физика, типа счётчика Гейгера: никто гарантированно не сможет предсказать число пролетающих в секунду частиц.
Но в VB, ессно, ничего подобного нет :-D
Изображение

uhm
Продвинутый гуру
Продвинутый гуру
Аватара пользователя
 
Сообщения: 1597
Зарегистрирован: 02.12.2004 (Чт) 15:21

Сообщение uhm » 11.05.2005 (Ср) 15:58

Гы-гы, kirrun, а приведи пример ДЕЙСТВИТЕЛЬНО СЛУЧАЙНОГО процесса? Эйнштейн, вон, к концу жизни перестал верить в случайности вообще...

Если серьезно, все, что вычисляется компьютером, по определению псевдослучайно.

Если с английским все в порядке, можешь почитать здесь:
http://www.random.org/essay.html. Там приводятся примеры генераторов случайных чисел, основанных на разных физических процессах, например, на распаде радиоактивных частиц :) Хотя, скорее всего, этот процесс тоже на самом деле подчиняется некой закономерности, просто ее невозможно уловить.

kirrun
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 514
Зарегистрирован: 06.04.2005 (Ср) 15:41
Откуда: Питер

Сообщение kirrun » 11.05.2005 (Ср) 16:00

Вот я и говорою "да вообще такой есть?"... Вот я и сомневаюсь, что такой есть...
"Единственный безопасный компьютер - это тот, который выключен из электросети, закрыт в сейфе, который зарыт 20 футов под землей в засекреченной местности. И то я не уверен относительно его безопасности."
(Деннис Хьюджес, ФБР)

Лёха_Virus
Продвинутый пользователь
Продвинутый пользователь
 
Сообщения: 168
Зарегистрирован: 24.03.2003 (Пн) 17:13
Откуда: Анграск

Сообщение Лёха_Virus » 11.05.2005 (Ср) 16:19

давайте теперь ударимся в софистику :)
если нет такого генератора случаных чисел, то рационально говоря генератор случайных чисел подразумевать генератор псевдослучаных чисел... да так кажись и делается... :)

tyomitch
Пользователь #1352
Пользователь #1352
Аватара пользователя
 
Сообщения: 12822
Зарегистрирован: 20.10.2002 (Вс) 17:02
Откуда: חיפה

Сообщение tyomitch » 11.05.2005 (Ср) 16:30

uhm писал(а):Если серьезно, все, что вычисляется компьютером, по определению псевдослучайно.

А что мешает не вычислять "случайные" числа, а наблюдать их (например, в указанных тобой процессах радиоактивного распада)? Там компьютер будет не при чём, и числа получатся действительно случайные.
Изображение

uhm
Продвинутый гуру
Продвинутый гуру
Аватара пользователя
 
Сообщения: 1597
Зарегистрирован: 02.12.2004 (Чт) 15:21

Сообщение uhm » 11.05.2005 (Ср) 16:34

Ничуть не спорю. Я к тому, что ДЕЙСТВИТЕЛЬНАЯ СЛУЧАЙНОСТЬ - это уже философское понятие, наверняка же теоретически можно придумать законы, описывающие процессы распада. Сейчас этот процесс кажется случайным, но только потому, что мы не видим закономерности, а она, на самом деле, скорее всего существует.

Мораль: все процессы в каком-то смысле псевдослучайны :)

Лёха_Virus
Продвинутый пользователь
Продвинутый пользователь
 
Сообщения: 168
Зарегистрирован: 24.03.2003 (Пн) 17:13
Откуда: Анграск

Сообщение Лёха_Virus » 11.05.2005 (Ср) 16:38

uhm, вот и я о том же

kirrun
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 514
Зарегистрирован: 06.04.2005 (Ср) 15:41
Откуда: Питер

Сообщение kirrun » 11.05.2005 (Ср) 18:02

Вот я и примерно это и говорил...

----------------------------------------------------------

Все пришли к консенсусу: все "случайные" процессы ПСЕВДОслучайны.
"Единственный безопасный компьютер - это тот, который выключен из электросети, закрыт в сейфе, который зарыт 20 футов под землей в засекреченной местности. И то я не уверен относительно его безопасности."
(Деннис Хьюджес, ФБР)

tyomitch
Пользователь #1352
Пользователь #1352
Аватара пользователя
 
Сообщения: 12822
Зарегистрирован: 20.10.2002 (Вс) 17:02
Откуда: חיפה

Сообщение tyomitch » 11.05.2005 (Ср) 18:54

uhm, если в этих процессах никто не видит закономерности (а сейчас её никто не видит), то эти процессы полностью непредсказуемы и поэтому достаточно случайны для любых применений.
Не исключено, что в будущем какой-нибудь Эйнштейн #2 откроет описывающую эти процессы закономерность; тогда они станут предсказуемыми и перестанут быть случайными. Но до этого пока далеко.

Для любителей философии предлагаю вопрос: "что такое - случайность?" Может быть, случайности вообще в мире нет? (т.е. не ограничиваясь компьютерами и другой техникой)
Изображение

uhm
Продвинутый гуру
Продвинутый гуру
Аватара пользователя
 
Сообщения: 1597
Зарегистрирован: 02.12.2004 (Чт) 15:21

Сообщение uhm » 11.05.2005 (Ср) 19:36

tyomitch, таки ты полностью повторил мою позицию, только не в тех терминах. Я ж нигде не говорю, что они неприменимы и т. д. Так что - редкий случай - похоже, все сошлись во мнениях! :)

kirrun
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 514
Зарегистрирован: 06.04.2005 (Ср) 15:41
Откуда: Питер

Сообщение kirrun » 11.05.2005 (Ср) 19:45

Ага =)
"Единственный безопасный компьютер - это тот, который выключен из электросети, закрыт в сейфе, который зарыт 20 футов под землей в засекреченной местности. И то я не уверен относительно его безопасности."
(Деннис Хьюджес, ФБР)

Amed
Алфизик
Алфизик
 
Сообщения: 5346
Зарегистрирован: 09.03.2003 (Вс) 9:26

Сообщение Amed » 11.05.2005 (Ср) 20:18

tyomitch писал(а):Для любителей философии предлагаю вопрос: "что такое - случайность?" Может быть, случайности вообще в мире нет? (т.е. не ограничиваясь компьютерами и другой техникой)


Случайность есть только для тех, кто не знает сути процесса, естественно. Если точно знать все параметры функции, генерирующей случайное значение, то оно станет совсем не случайным. Точно так же, если не знаешь принцип действия телевизора (осциллографа, компьютера, etc.), ни за что не догадаешься, как он поведёт себя в тот или иной момент. А как узнал, - всё очень просто и предсказуемо. Вот.

Вывод - всё относительно. Эйнштейн прав. :D

Джеффи
Бывалый
Бывалый
 
Сообщения: 256
Зарегистрирован: 06.03.2005 (Вс) 0:26

Сообщение Джеффи » 11.05.2005 (Ср) 20:21

Костя111 писал(а):Я быть может не в тему скажу но...
Как то на заре програмирования ( в моей жизни) мы с одним корешом задумывались как создать генератора случайный чисел. Проблема заключалась в том что у нас получался слишком узкий диапазон и чтоб его раздуть необходимо было писать какой нить аддонс. И естественно он тож должен был быть рандомным. Короче после двух недель раздумья мы пришли к выводу что невозможно создать идеальный ген.случ.чис используя только какието математические команды. Выход из этой ситуации заключается в следующем. Для того чтоб создать действительно генератор случайных чисел необходимо использовать какой то внешний фактор, равно тому как например постоянно меняется скорость ветра (ИМХО). Например можно использовать изменение скорости кулера на проце. Кнешно пускай она тож будет повторяться(хотя это в случае идеального состояния окружающей среды и напряжения питания) но это гдето уже ближе к истине.
Кто то тут говорил что сам человек прежде чем сказать какое число думает перед етим. Я так думаю что если попросить кого нить с некоторой перидичностью говорить по десять чисел то мы врядли обнаружим какюто связь или зависимость. Выедь в данном случае человек не задумывается над последствиями сказанного и не будет как то пытаться предсказать результат.


Всё в тему :)

А теперь скажу я:
Настоящий гениратор случайных чисел тот, в котором некотором случайном порядке выдаются числа причём ВСЕ из заданного диапазона, и это циклически повторяет, всегда. Например: диапазон 0 - 10, шаг 1 получаем: 2 7 3 1 8 4 9 4 5 0 10 и повторяем это бесконечно. Однако если дать функции значение внешнего фактора аля Timer то этот прядок должен измениться в корне к примеру так: 3 4 9 2 5 8 4 1 6 7 10. Вот это и будет идеальный с точки зрения программирования идеальный генератор случайных чисел. :wink:

А вообще лучший генератор написан на ассемблере на коре головного мозга :D

Amed
Алфизик
Алфизик
 
Сообщения: 5346
Зарегистрирован: 09.03.2003 (Вс) 9:26

Сообщение Amed » 11.05.2005 (Ср) 20:27

Говорить надо проще, используя понятие матожидание и прочие...

Джеффи
Бывалый
Бывалый
 
Сообщения: 256
Зарегистрирован: 06.03.2005 (Вс) 0:26

Сообщение Джеффи » 11.05.2005 (Ср) 20:30

Amed писал(а):матожидание и прочие...

:shock:

Говорить надо проще, я не понял :D

Amed
Алфизик
Алфизик
 
Сообщения: 5346
Зарегистрирован: 09.03.2003 (Вс) 9:26

Сообщение Amed » 11.05.2005 (Ср) 20:31

Тонкая ирония, знаешь ли :D

Курс теории вероятностей. ;)

Matew
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 894
Зарегистрирован: 28.06.2004 (Пн) 17:44
Откуда: Дальний Восток, г. Ха

Сообщение Matew » 12.05.2005 (Чт) 2:55

Чуть-чуть практики. Для криптографии применяются алгоритмы, где нет повторений. В частности еще не найдена зависимость(период) в известной дробной части числа Пи (занимает компакт диск :D ) т.ч. если вы не хотите повторений, то берите числа от туда.

Rostik Ultra (2)
Продвинутый пользователь
Продвинутый пользователь
 
Сообщения: 159
Зарегистрирован: 10.05.2005 (Вт) 2:41
Откуда: Антарктическая республика

Сообщение Rostik Ultra (2) » 12.05.2005 (Чт) 3:08

[quote=]
Вообще-то мы тут обсуждаем как написать аналог Rnd не используя его... ПРИЧЁМ ТУТ Randomize???? :shock: :roll:[/quote]

Притом что неплохая идея :D А если хочешь без Randomize то поставь за окно флюгер и считывай его показатели :lol: :lol:

А если серьёзно то , для получения случайного результата нужно уничтожить любую причинно - следственную цепь ...
А для этого нужно получить абсолютную ПУСТОТУ в которой нет ничего : ни материи , ни времени , ни разума , ни самой пустоты Вдумайтесь в это ... НЕТ НИЧЕГО.......

А потом в этой пустоте нужно что-то создать ( но прежде нужно осознать и осмыслить эту пустоту ) и тогда это что-то будет ействительно случайным.

В современных микропропроцессорах есть такая команда ? Создать Пустоту ? :lol: :lol: Я где-то видел в каком-то мануале :lol: :lol: :lol:

Костя111
Новичок
Новичок
 
Сообщения: 44
Зарегистрирован: 04.03.2005 (Пт) 14:59

Сообщение Костя111 » 12.05.2005 (Чт) 7:39


абсолютную ПУСТОТУ в которой нет ничего : ни материи , ни времени , ни разума , ни самой пустоты Вдумайтесь в это ... НЕТ НИЧЕГО.......

Предположим, что заключив договор с Богом и чертом мы создадим это НЕЧТО

А потом в этой пустоте нужно что-то создать ( но прежде нужно осознать и осмыслить эту пустоту ) и тогда это что-то будет ействительно случайным.

А вот тут характериситка ПУСТОТНОСТИ пропадает и выходит что все зря
:lol: :lol: :lol: че то я гоню..... :lol:

uhm
Продвинутый гуру
Продвинутый гуру
Аватара пользователя
 
Сообщения: 1597
Зарегистрирован: 02.12.2004 (Чт) 15:21

Сообщение uhm » 12.05.2005 (Чт) 9:33

Matew, насколько я помню, число пи непериодично...

zHackLeX
Бывалый
Бывалый
Аватара пользователя
 
Сообщения: 283
Зарегистрирован: 23.10.2003 (Чт) 21:08

Сообщение zHackLeX » 12.05.2005 (Чт) 15:12

Конечно непериодично. Итак. Вот план.
1) считаем дес. знаки числа ПИ.
2) При Randomize X перескок на начальный знак - x-тый по счёту
3) Чтобы никто не догадался, можно похорить результат на какое-нть число... или ещё как нибудь изменить... Ну, взять обратное, что ли...
Или взять остаток от деления Х-ой цифры на (х-1)-ую...
Но это псевдослучайно.

А вот истинно случайно - задействовать сдёрнутое из биоса значение скорости вентиля на камне или на видеокарте.
Единственное, где это не прокатит, место - СТАРЫЕ компы без кулеров. (ДА, были и такие!!!)
( :shock: :) )
There is no knowledge that is not power...

X,C,A,B,C,Z,X,A,B,C,Z....
Многие ли помнят? :)

Опришник
Обычный пользователь
Обычный пользователь
 
Сообщения: 78
Зарегистрирован: 09.01.2005 (Вс) 0:48
Откуда: localhost

Сообщение Опришник » 12.05.2005 (Чт) 17:43

В идеале генератор псевдослучайных чисел никогда не будет повторяться...
А математическая модель такого генератора не сложна, в ней используеться ранее полученное значение, к которому прибавляется константа(от нею обычно и зависит степень случайности(слышал 1.4 даёт очень не плохие результаты)), затем возводиться в определённую степень(тоже серьёзно влияет(значение от 4 до 8 обычно))
Теперь о 100% генераторов не переиодических случайных чисел:
такого можно достичь при использование непериодических бесконечных чисел(ну типа pi...)
А здесь могла бы быть ваша реклама...)

tyomitch
Пользователь #1352
Пользователь #1352
Аватара пользователя
 
Сообщения: 12822
Зарегистрирован: 20.10.2002 (Вс) 17:02
Откуда: חיפה

Сообщение tyomitch » 12.05.2005 (Чт) 18:47

Ну чего вы все так прицепились к пи? Sqr(2) - тоже непериодическое число, и главное - считается горяздо легче ;-)
Изображение

Rostik Ultra (2)
Продвинутый пользователь
Продвинутый пользователь
 
Сообщения: 159
Зарегистрирован: 10.05.2005 (Вт) 2:41
Откуда: Антарктическая республика

Сообщение Rostik Ultra (2) » 13.05.2005 (Пт) 3:36

ИМХО создать генератор случайных чисел программными средствами не удасться т.к. прога - это алгоритм , следовательно он рождает последовательность ПСЕВДО случайных чисел и степень этой случайности прямо пропорциональна времени которое будет затрачиваться на то чтобы распознать этот алгоритм...

Случайность - это непредсказуемость событий в рамках данной системы , т.е. причины лежащие в основе конкретного события в этой системе НЕ могут быть описаны ( и следовательно предсказаны ) ТОЛЬКО методами примениыми к этой системе . Например невозможно предсказать поведение тела которое движется со скоростью близкой к световой методами классисческой механики...

Поэтому компьютерный код для решения этой проблемы не подходит ( см. абзац 1 )
Но что надо делать ! Поэтому я предлагаю :

1. Использовать код ТОЛЬКО как средство для получения информации (в данном случае последовательности случайных чисел )

2. А как получить эту последовательность ?
Для этого нужно выйти за рамки нашей системы ( в данном случае "за рамки программы" ) ( см. абзац 2 )

Я думаю добиться этого можно так :
Забацать прогу которая будет намеренно создавать критические ситуации для ЖЕЛЕЗА ( перегружать проц , видеокарту , ... и много чего ещё что касается железа ) А затем будет считывать параметры возникающих при этом багов ( если конечно система не упадёт :lol: )

Результат таких критических ситуаций будет действительно непредсказуемым т.к. поведение железа будет зависить от температуры , влажности , от характеристики самого железа , от того на сколько оно было загруженным различными процессами на момент "критического запроса"

Правда есть вероятность что такая прога немного повредит ПК , но это ладно ...

FaKk2
El rebelde gurú
El rebelde gurú
Аватара пользователя
 
Сообщения: 2031
Зарегистрирован: 09.03.2003 (Вс) 22:10
Откуда: Los Angeles

Сообщение FaKk2 » 13.05.2005 (Пт) 3:48

...А глаза, добрые, добрые...
Для получения ответа надо продемонстрировать качества, позволяющие стать компетентным — внимательность, вдумчивость, наблюдательность, желание активно участвовать в выработке решения.

Опришник
Обычный пользователь
Обычный пользователь
 
Сообщения: 78
Зарегистрирован: 09.01.2005 (Вс) 0:48
Откуда: localhost

Сообщение Опришник » 14.05.2005 (Сб) 22:09

tyomitch писал(а):Ну чего вы все так прицепились к пи? Sqr(2) - тоже непериодическое число, и главное - считается горяздо легче ;-)

Может считается и легче, но найти значение числа PI(примерно до 100тыс. знака) гораздо легче чем для Sqr(2)... :D
Последний раз редактировалось Опришник 14.05.2005 (Сб) 22:40, всего редактировалось 1 раз.
А здесь могла бы быть ваша реклама...)

killerb
Новичок
Новичок
 
Сообщения: 43
Зарегистрирован: 27.01.2005 (Чт) 23:08
Откуда: Днепропетровск

Сообщение killerb » 14.05.2005 (Сб) 22:20

RND выдает значение из огромного набора чисел.
RND функция ОС, а не процессора.
RND увеличивает каждый раз свой counter на 1 - поэтому значения не повторяються
Randomize Timer - тот-же RND, который указывает номер записи из огромного набора чисел, иными словами, на пальцах так:

Randomize Timer - 1(исп.), 2(исп.), 3(исп.), 4(исп.), 5(исп.), 6(исп.), 7(исп.), 8, 9, 10...
RND - 886(исп), 887, 888, 889, 890, 891, 892, 893, 894 (- восьмой элемент от последнего использованного), 895...
RND = 894

Поправте если неправ.
Жизнь - это карусель, на которой никому не дано удержаться надолго. Стивен Кинг

tyomitch
Пользователь #1352
Пользователь #1352
Аватара пользователя
 
Сообщения: 12822
Зарегистрирован: 20.10.2002 (Вс) 17:02
Откуда: חיפה

Сообщение tyomitch » 14.05.2005 (Сб) 22:36

killerb писал(а):RND функция ОС, а не процессора.

Тогда покажи её в PSDK.
Изображение

Опришник
Обычный пользователь
Обычный пользователь
 
Сообщения: 78
Зарегистрирован: 09.01.2005 (Вс) 0:48
Откуда: localhost

Сообщение Опришник » 14.05.2005 (Сб) 22:51

killerb писал(а):RND выдает значение из огромного набора чисел.
RND функция ОС, а не процессора.
RND увеличивает каждый раз свой counter на 1 - поэтому значения не повторяються
...
Поправте если неправ.

Ага, я забыл сказать что на кампах используеться генератор, о котором я рассказывал в одном из предыдущих моих постов...
А здесь могла бы быть ваша реклама...)

Пред.

Вернуться в Visual Basic 1–6

Кто сейчас на конференции

Сейчас этот форум просматривают: SemrushBot и гости: 187

    TopList