Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  | Правила  

Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » AutoIt » [решено] Вернуть рандомную фразу

Ответить
Настройки темы
[решено] Вернуть рандомную фразу

Аватара для FlatX007

Ветеран


Сообщения: 553
Благодарности: 87

Профиль | Отправить PM | Цитировать


Как вернуть рандомное число извесно, а как вернуть "фразу" из рандомных букв ?

У меня предположение я не пробовал ещё - нужно вернуть рандомное число от 1 до 33 и к каждой цифре приравнять букву из алфавита по порядковому номеру, потом "сумировать" комбинации. Если так то пример ненадо я сам придумаю.

Меня интересует есть ли другой способ

Отправлено: 07:32, 09-07-2009

 

Аватара для Creat0R

Must AutoIt


Сообщения: 3054
Благодарности: 1009

Профиль | Сайт | Отправить PM | Цитировать


Цитата proxy:
есть ли скрытый смысл в использование Dim? »
Какой скрытый смысл? переменные уже объявлены в локальном скупе, а Dim позволяет присвоить значение нескольким переменным сразу, при этом не меняя локального скупа.

-------
“Сделай так просто, как возможно, но не проще этого.”... “Ты никогда не решишь проблему, если будешь думать так же, как те, кто её создал.”

Альберт Эйнштейн

P.S «Не оказываю техподдержку через ПМ/ICQ, и по email - для этого есть форум. ©»

http://creator-lab.ucoz.ru/Images/Icons/autoit_icon.png Русское сообщество AutoIt | http://creator-lab.ucoz.ru/Images/Ic...eator_icon.png CreatoR's Lab | http://creator-lab.ucoz.ru/Images/Icons/oac_icon.png Opera AC Community


Отправлено: 15:50, 09-07-2009 | #11



Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.

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


Аватара для FlatX007

Ветеран


Сообщения: 553
Благодарности: 87

Профиль | Отправить PM | Цитировать


Так оно работает и без Local $iMin_Rndm = 33, $iMax_Rndm = 255

А если убрать строчку If $iOnly_ASCII Then Dim $iMin_Rndm = 97, $iMax_Rndm = 122 - то получается гинератор крокозябр просто несталкивался с функцией Chr на практике - вот и задаю глупые вопросы.

Отправлено: 15:54, 09-07-2009 | #12


Аватара для proxy

Старожил


Сообщения: 460
Благодарности: 152

Профиль | Отправить PM | Цитировать


Цитата Creat0R:
при этом не меняя локального скупа. »
вот эотго не понимаю.

чем это:
Цитата:
Local $iMin_Rndm = 33, $iMax_Rndm = 255
If $iOnly_ASCII Then Dim $iMin_Rndm = 97, $iMax_Rndm = 122
т.е. при этом, не будут объявляться новые переменные, т.к. будет определенно, что они уже существуют и им просто будет присвоенно новое значение?

будет отличаться от этого:
Цитата:
Local $iMin_Rndm = 33, $iMax_Rndm = 255
If $iOnly_ASCII Then Local $iMin_Rndm = 97, $iMax_Rndm = 122
а в этом случае, невзирая, что эти переменные уже существуют, они снова будут объявленны и им будет присвоенно соотсвтевующее значение...

так?

-------
Мысли-читатель сломался, может подробней расскажите?
А где исходный код? Или мы стихи обсуждаем?! )) Настройки темы > Решено ?


Отправлено: 15:57, 09-07-2009 | #13


Аватара для Creat0R

Must AutoIt


Сообщения: 3054
Благодарности: 1009

Профиль | Сайт | Отправить PM | Цитировать


Цитата FlatX007:
Так оно работает и без Local $iMin_Rndm = 33, $iMax_Rndm = 255 »
Ну попробуй вместо 1 поставить 0 при вызове функции (последний параметр)

Цитата FlatX007:
если убрать строчку If $iOnly_ASCII Then Dim $iMin_Rndm = 97, $iMax_Rndm = 122 - то получается гинератор крокозябр »
Не надо ничего убирать, это можно сделать и через параметр $iOnly_ASCII = 0. Если он будет равен 1, то будет гинерировать только ASCII символы.

Цитата proxy:
чем это:
Цитата:Local $iMin_Rndm = 33, $iMax_Rndm = 255
If $iOnly_ASCII Then Dim $iMin_Rndm = 97, $iMax_Rndm = 122
будет отличаться от этого:
Цитата:Local $iMin_Rndm = 33, $iMax_Rndm = 255
If $iOnly_ASCII Then Local $iMin_Rndm = 97, $iMax_Rndm = 122
? »
Ничем, оба варианта работают одинаково. Я вот другого не понимаю, зачем придираться к этим мелочам, не в этом же суть функции.

-------
“Сделай так просто, как возможно, но не проще этого.”... “Ты никогда не решишь проблему, если будешь думать так же, как те, кто её создал.”

Альберт Эйнштейн

P.S «Не оказываю техподдержку через ПМ/ICQ, и по email - для этого есть форум. ©»

http://creator-lab.ucoz.ru/Images/Icons/autoit_icon.png Русское сообщество AutoIt | http://creator-lab.ucoz.ru/Images/Ic...eator_icon.png CreatoR's Lab | http://creator-lab.ucoz.ru/Images/Icons/oac_icon.png Opera AC Community


Отправлено: 16:02, 09-07-2009 | #14


Аватара для proxy

Старожил


Сообщения: 460
Благодарности: 152

Профиль | Отправить PM | Цитировать


Цитата Creat0R:
Ничем, оба варианта работают одинаково. Я вот другого не понимаю, зачем придираться к этим мелочам, не в этом же суть функции. »
нееее. я не придираюсь - я изучаю, мнеж не понятно. думал что в этом есть реально смысл, который я непомниаю. я бы Local написал бы без задней мысли...а тут Dim - вот и удивился ....)

-------
Мысли-читатель сломался, может подробней расскажите?
А где исходный код? Или мы стихи обсуждаем?! )) Настройки темы > Решено ?


Отправлено: 16:05, 09-07-2009 | #15


Аватара для Creat0R

Must AutoIt


Сообщения: 3054
Благодарности: 1009

Профиль | Сайт | Отправить PM | Цитировать


proxy,

Из справки:

Цитата:
The difference between Dim, Local and Global is the scope in which they are created:
Dim = Local scope if the variable name doesn't already exist globally (in which case it reuses the global variable!)
Global = Forces creation of the variable in the Global scope
Local = Forces creation of the variable in the Local/Function scope

You should use Local or Global, instead of Dim, to explicitly state which scope is desired for a variable/constant/array.
Т.е в нашем случае, оно не играет особой роли, вот если бы эти переменные были заранее объявлены глобально, то Local в функции создал бы точно такие переменные с локальным скупом, а Dim оставил бы скуп как есть, только переназначил бы значения.

-------
“Сделай так просто, как возможно, но не проще этого.”... “Ты никогда не решишь проблему, если будешь думать так же, как те, кто её создал.”

Альберт Эйнштейн

P.S «Не оказываю техподдержку через ПМ/ICQ, и по email - для этого есть форум. ©»

http://creator-lab.ucoz.ru/Images/Icons/autoit_icon.png Русское сообщество AutoIt | http://creator-lab.ucoz.ru/Images/Ic...eator_icon.png CreatoR's Lab | http://creator-lab.ucoz.ru/Images/Icons/oac_icon.png Opera AC Community

Это сообщение посчитали полезным следующие участники:

Отправлено: 16:18, 09-07-2009 | #16


Googler


Сообщения: 3665
Благодарности: 1563

Профиль | Отправить PM | Цитировать


Цитата FlatX007:
Где логика »
ладно, проехали...

Максимально случайным будет только первый вызов Random(), случайность всех последующих вызовов будет существенно ниже – реальная величина зависит от применяемого алгоритма генератора СЧ. Т.к. максимально целое случайное число является 31-разрядным, длина максимально-случайного слова вычисляется формулой 31*ln2/lnN, где N – кол-во букв в алфавите. Для 33 русских букв одного регистра - это слово из 6 букв. Т.е. для максимально случайной фразы мы должны генерировать не по одной букве, а по 6-символьным последовальностям, при этом каждые 5 битов числа будут кодировать одну букву.

P.S. вся эта “нудь” имеет смысл только при решении задач типа генераторов паролей, чтобы точно знать РЕАЛЬНУЮ сложность сгенерированного пароля
Это сообщение посчитали полезным следующие участники:

Отправлено: 16:58, 09-07-2009 | #17


Аватара для FlatX007

Ветеран


Сообщения: 553
Благодарности: 87

Профиль | Отправить PM | Цитировать


Нащёт моего примера в шапке я и так знаю
Цитата amel27:
Максимально случайным будет только первый вызов Random(), »
- поэтому и попросил помочь. :Р а из формулы я ничего непонял.

Отправлено: 19:40, 09-07-2009 | #18


Googler


Сообщения: 3665
Благодарности: 1563

Профиль | Отправить PM | Цитировать


FlatX007, можно уменьшить кол-во вызовов Random():
Код: Выделить весь код
$p = _GetRandomString(10)
$e = @extended

ConsoleWrite("Password: "& $p &@CRLF)
ConsoleWrite("Skipped : "& $e &" chars"&@CRLF)

Func _GetRandomString($iLen, $sABC = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz_@")
    Local $iABC = StringLen($sABC), $sOut = ""
    Local $iBit = Int(Log($iABC)/Log(2)) ; бит на символ
    Local $iMsk = BitShift(1,-$iBit) -1  ; битовая маска
    Local $iChr = Int(31/$iBit)          ; символов на одно случайное число

        While 1
        $iRnd = Random(1, 0x7FFFFFFF, 1)
        For $i=1 To $iChr
            $sOut &= StringMid($sABC, BitAND($iRnd, $iMsk)+1, 1)
            If StringLen($sOut)>=$iLen Then Return SetError(0, $iABC-$iMsk-1,$sOut)
            $iRnd = BitShift($iRnd, $iBit)
        Next
    WEnd
EndFunc
ADD: кол-во символов должно быть равно степени двойки (32, 64,...), иначе строка обрезается до ближайшей такой

Последний раз редактировалось amel27, 11-07-2009 в 12:50. Причина: доработка скрипта

Это сообщение посчитали полезным следующие участники:

Отправлено: 02:56, 11-07-2009 | #19


Аватара для tweakos

Старожил


Автор проектов


Сообщения: 374
Благодарности: 128

Профиль | Отправить PM | Цитировать


FlatX007, Есть способ гораздо проще:
Код: Выделить весь код
$1=random("65","95")
$2=random("65","95")
$3=random("65","95")
$4=random("65","95")
$5=random("65","95");здесь записываем необходимое кол-во рандомных цифр
$result=(chr($1)&chr($2)&chr($3)&chr($4)&chr($5));обьеденяем фразу ,посредством chr переводим цифру в букву

-------
Аддон [XpAnimateStyle] Анимированные вход/перезагр/выкл в WinXp / New Autorun Construct Alpha
/
LogonUI&Logo Changer / Theme patcher программа изменения элементов тем оформления
/
персонализация (смена обоев через фэйд)


Отправлено: 05:42, 11-07-2009 | #20



Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » AutoIt » [решено] Вернуть рандомную фразу

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
Интерфейс - [решено] Как вернуть экран приветствия BencX Microsoft Windows 2000/XP 22 24-01-2015 10:39
Загрузка - [решено] Как вернуть картинку загрузки? dimx Microsoft Windows 7 25 20-12-2010 15:26
Интерфейс - [решено] Вернуть в стандартный вид значки lolik119 Microsoft Windows 2000/XP 4 24-07-2009 19:36
[решено] Как вернуть расширение файлу? vof44ik Хочу все знать 8 14-06-2009 00:12
[решено] Сжатые файлы:как вернуть typus Microsoft Windows 2000/XP 2 10-03-2007 01:26




 
Переход