Visual Basic, .NET, ASP, VBScript
 

   
   
     

Форум - Общий форум

Страница: 1 | 2 | 3 |

 

  Вопрос: Как работает функция IsMissing, на практике... Добавлено: 11.07.06 21:45  

Автор вопроса:  Nj | ICQ: 223663115 

Ответить

  Ответы Всего ответов: 36  

Номер ответа: 16
Автор ответа:
 Sharp


Лидер форума

ICQ: 216865379 

Вопросов: 106
Ответов: 9979
 Web-сайт: sharpc.livejournal.com
 Профиль | | #16
Добавлено: 23.08.06 20:09
Функция уже не обычная, обычная -- это обычное RND.

Обычное RND как раз имеет статические переменные.

Ответить

Номер ответа: 17
Автор ответа:
 Artyom



Разработчик

Вопросов: 130
Ответов: 6602
 Профиль | | #17 Добавлено: 23.08.06 22:11
1. Мне нужна эта функция, константы не подходят - значения меняются, но изредка.

Если их можно изменить в режиме разработки, то никто не мешает изменить их и перекомпилировать код.
Если можно изменить только в рантайме, то хотя бы глобальные переменные. Но никак не то что ты сделал.

2. Функция уже не обычная, обычная -- это обычное RND. И класс - это не единственная причина создавать статичную функцию. Здесь значение нужно, а насчет Dir - согласен, что не удобно, но можно и циклом

Это самое обычное RND, в MSDN даже пример есть такой, как выбрать произвольное число из диапазона, код 1:1, не считая твоих понтовых наворотов.

3. Действительно дельно: если вдруг одновременно эту функцию будут вызывать 2 источника, может выйти неприятность, но если в программе имеется такая вероятность, то можно вызывать границы: их никто не запрещал в моей функции.

Если есть минимальная вероятность того что это поизойдет или того, что когда-нибудь кто-нибудь седлает так, что это сможет произойти то грош цена этому твоему навороту.
Вообще, такая ситуация гораздо более реальна чем ты себе можешь представить.

4. Да лучше написать границы один раз, если вся программа работает с одинаковым диапозоном чисел.

Если твоя прогармма работает с разными диапазонами чисел, то указывай каждый раз этот диапазон!

Возможно, сейчас тебе это может казаться очень красивым и оригинальным решением, но можешь мне поверить при более обширом взгляде это только увеличивает хаотичность кода.

Настоящее искусство прогарммирования - это не грязные хаки, оптимизация под компиляторы, и прочие вещи, а чистый, красивый, понятный код :)

Ответить

Номер ответа: 18
Автор ответа:
 Sharp


Лидер форума

ICQ: 216865379 

Вопросов: 106
Ответов: 9979
 Web-сайт: sharpc.livejournal.com
 Профиль | | #18
Добавлено: 24.08.06 13:10
Настоящее искусство прогарммирования - это не грязные хаки, оптимизация под компиляторы, и прочие вещи, а чистый, красивый, понятный код :)

Хех :) Добро пожаловать в реальный мир, Нео :)

Ответить

Номер ответа: 19
Автор ответа:
 Nj



ICQ: 223663115 

Вопросов: 21
Ответов: 285
 Профиль | | #19 Добавлено: 24.08.06 14:55
2 Sharp
Насчет RND, зачем ей статичные переменные? Всегда хотелось узнать, как работают задатчики случайных чисел...

2 Brand
Можно подумать, что я упорно настаиваю, заставляю тебя пользоваться моей функцией, наводнять ей твой код...
МОЙ КОД ОНА НЕ ПОРТИТ, и сколько не трудись, в обратном ты меня не убедишь - мне это действительно кажется красивым и оригинальным (ну, не очень оригинальным) решением!
Настоящее искусство прогарммирования - это не грязные хаки, оптимизация под компиляторы, и прочие вещи, а чистый, красивый, понятный код :)
Ага, так и есть, я то же так считаю, только не вижу причины, полагать Rnd2 злостным врагом этого утверждения.
Просьба не припоминать мне участие в теме "Ctrl+Alt+Del и как с этим бороться" и "Пошутим с пользователем" ну или как-то так они назывались... :)

Ответить

Номер ответа: 20
Автор ответа:
 Sharp


Лидер форума

ICQ: 216865379 

Вопросов: 106
Ответов: 9979
 Web-сайт: sharpc.livejournal.com
 Профиль | | #20
Добавлено: 24.08.06 15:54
Насчет RND, зачем ей статичные переменные? Всегда хотелось узнать, как работают задатчики случайных чисел...

Обычно ГСЧ выглядят примерно так:
int rnd(){
 static int seed;
 seed = func1(seed);
 return func2(seed);
}

А func - что-то типа a * 89364623 + 32463764, что, разумеется, считается по модулю 2^32

Ответить

Номер ответа: 21
Автор ответа:
 Nj



ICQ: 223663115 

Вопросов: 21
Ответов: 285
 Профиль | | #21 Добавлено: 24.08.06 15:59
2 Sharp
Ээ, это на С? Я только VB и QB знаю.. :(
Как Генератор СЧ сделать на VB? Буду признателен за совет.

Ответить

Номер ответа: 22
Автор ответа:
 Artyom



Разработчик

Вопросов: 130
Ответов: 6602
 Профиль | | #22 Добавлено: 24.08.06 17:15
Хех :) Добро пожаловать в реальный мир, Нео :)

Надо просто не Кнута читать, а Макконелла :)

Можно подумать, что я упорно настаиваю, заставляю тебя пользоваться моей функцией, наводнять ей твой код...

Если б настаивал, я б очень на тебя разозлился :(
В моем коде такой функции в прнципе не может появиться.

МОЙ КОД ОНА НЕ ПОРТИТ, и сколько не трудись, в обратном ты меня не убедишь - мне это действительно кажется красивым и оригинальным (ну, не очень оригинальным) решением!

Можешь мне поверить, код этот понт портит.
Это напоминает мне рассказы о молодых неопытных архитекторах :)
Ну вот придумал архитектор какой-нибудь финт, причем такого ни у кого нет! И давай его лепить направо и налево - а че, круто ведь, классно смотрится.
Ему совершенно наплевать, как на этот финт посмотрят остальные, сколько с ним потом прийдется намучиться другим, и совершенно плевать на многолетний опыт професиональных архитекторов :(

Просьба не припоминать мне участие в теме "Ctrl+Alt+Del и как с этим бороться" и "Пошутим с пользователем" ну или как-то так они назывались... :)

Просьба не припоминать мне участие в темах "ээээээ" и "Давайте напишем игру Жизнь взломщика"

Как Генератор СЧ сделать на VB? Буду признателен за совет.

Скажи честно, нафиг тебе генератор случаных чисел на VB? Я согласен, что этА крутА - иметь в программе свой собственный генератор чисел, но более случайным чем RND он ни на миллиметр не станет (наоборот - гораздо больше вероятность что он будет генерировать более предсказуемые числа)
Если хочешь более случайных чисел, то надо использовать функции CryptoAPI, но я очень сомневаюсь что у тебя есть реальная необходимость в такой случайности...

Ответить

Номер ответа: 23
Автор ответа:
 Sharp


Лидер форума

ICQ: 216865379 

Вопросов: 106
Ответов: 9979
 Web-сайт: sharpc.livejournal.com
 Профиль | | #23
Добавлено: 24.08.06 17:29
Перевод, хочу отметить, элементарен.
Function rnd() As Long
 Static seed As Long
 seed = func1(seed)
 rnd = func2(seed)
End Function

Ответить

Номер ответа: 24
Автор ответа:
 Sharp


Лидер форума

ICQ: 216865379 

Вопросов: 106
Ответов: 9979
 Web-сайт: sharpc.livejournal.com
 Профиль | | #24
Добавлено: 24.08.06 17:33
Надо просто не Кнута читать, а Макконелла :)

Теория, мой друг, суха. А древо жизни пышно зеленеет (с) :)
Просьба не припоминать мне участие в темах "ээээээ"

Зря напомнил :)
но более случайным чем RND он ни на миллиметр не станет (наоборот - гораздо больше вероятность что он будет генерировать более предсказуемые числа)

Вранье, вбшный RND - страшно тупой генератор. Любой генератор из Кнута лучше, а уж нормальные, которые считывают положение мыши и содержимое памяти - в тысячи раз лучше. У последних CryptoAPI, кстати, тоже сосет, если, конечно, делать все как надо. Вспомни WebMoney - там ключевой файл генерится серьезным ГСЧ.

Ответить

Номер ответа: 25
Автор ответа:
 Nj



ICQ: 223663115 

Вопросов: 21
Ответов: 285
 Профиль | | #25 Добавлено: 24.08.06 21:34
2 Brand
Можешь мне поверить, код этот понт портит.
Нет, блин, не поверю! >;)Уже говорил и возвращаться к этому не стану! Я не архитектор, не разработчик MSOffice, и меня такой вопрос не заботит, так же как и твоя манера писать и читать код.
Про темы: кто помнит "Кто считает.. загляни сюда"?2 Sharp
Так, а что это за функции func1 и func2? Хотя идею начал понимать: дело в сканировании памяти и координатах курсора, часах, кол-ве секунд с полунучи и т.п.?

Ответить

Номер ответа: 26
Автор ответа:
 Nj



ICQ: 223663115 

Вопросов: 21
Ответов: 285
 Профиль | | #26 Добавлено: 24.08.06 21:36

Offtop:
Я случайно пропустил конец строки между темой и 2 Sharp, просьба не понимать двусмысленно... ;)

Ответить

Номер ответа: 27
Автор ответа:
 Artyom



Разработчик

Вопросов: 130
Ответов: 6602
 Профиль | | #27 Добавлено: 24.08.06 22:00
Нет, блин, не поверю! >;)Уже говорил и возвращаться к этому не стану! Я не архитектор, не разработчик MSOffice, и меня такой вопрос не заботит, так же как и твоя манера писать и читать код.

Ладно, ты безнадежен, не буду время тратить.

Так, а что это за функции func1 и func2? Хотя идею начал понимать: дело в сканировании памяти и координатах курсора, часах, кол-ве секунд с полунучи и т.п.?

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

Чтоб сканирование памяти и прочая фантастика, надо CryptoAPI использовать, список параметров состояния системы, которые используются при генерации случайных данных не вмещается на книжной страничке мелким шрифтом.

Ответить

Номер ответа: 28
Автор ответа:
 Nj



ICQ: 223663115 

Вопросов: 21
Ответов: 285
 Профиль | | #28 Добавлено: 24.08.06 22:17
Я давно уже предлагал закончить обсуждение изысков
Так, сэнкс, кое-что ясно, но где же взять номер случайной позиции? Ведь он то же случайный? А идея смешивать температуру процессора на текущий размер буфера обмена и делить на номер дня в году куда интереснее... Надо будет попробовать...

Ответить

Номер ответа: 29
Автор ответа:
 Artyom



Разработчик

Вопросов: 130
Ответов: 6602
 Профиль | | #29 Добавлено: 24.08.06 23:14
Я давно уже предлагал закончить обсуждение изысков

А я уже и не обсуждаю, успокойся.

Так, сэнкс, кое-что ясно, но где же взять номер случайной позиции?

Классический пример - Randomize.
Если не ошибаюсь, если вызываешь его без параметров, то но инициализирует позицию генератора таймером.
Если в .NET используешь класс Random с конструктором по умолчанию, то он инициализирует себя сам.

А идея смешивать температуру процессора на текущий размер буфера обмена и делить на номер дня в году куда интереснее...

Опять хочешь сделать самый правильный молоток?
Ты просто из принципе не хочешь использовать то, что я говорю? :)
Лучшие специалисты по безопасности из Microsoft советуют для генерации произвольных данных использовать CryptoAPI, а тебе опять температура процессора и номер дня в году...
Блин, куда котится мир...

Ответить

Номер ответа: 30
Автор ответа:
 Sharp


Лидер форума

ICQ: 216865379 

Вопросов: 106
Ответов: 9979
 Web-сайт: sharpc.livejournal.com
 Профиль | | #30
Добавлено: 25.08.06 13:07
Так, а что это за функции func1 и func2?

А func - что-то типа a * 89364623 + 32463764, что, разумеется, считается по модулю 2^32

Чтоб сканирование памяти и прочая фантастика, надо CryptoAPI использовать, список параметров состояния системы, которые используются при генерации случайных данных не вмещается на книжной страничке мелким шрифтом.

Вранье, CryptoAPI привязывается к одному-двум параметрам системы, из которых самый непредсказуемый - значение RDTSC.
Лучшие специалисты по безопасности из Microsoft советуют для генерации произвольных данных использовать CryptoAPI, а тебе опять температура процессора и номер дня в году...

Эти же специалисты оставляют в коде идиотские дыры, наподобие RPC DCOM, LSASS, уязвимостей в tcpip.sys и srv.sys, дырки в обработке файлов BMP, WMF и бездну других. Слова "специалистов по безопасности" из Microsoft вообще не должны ничего значить после этого :)
И поэтому нормальные программы типа WebMoney, GPG, и т.п. юзают куда более серьезные алгоритмы. Хотя если тебе такая секьюрность ни к чему, можешь не париться и в самом деле юзать CryptoAPI

Ответить

Страница: 1 | 2 | 3 |

Поиск по форуму



© Copyright 2002-2011 VBNet.RU | Пишите нам