Что нового

Рандомный выбор значения

blacklis

Новичок
Сообщения
64
Репутация
1
Доброго времени суток. Извиняюсь, если подобный вопрос уже был.
Как сделать рандомный выбор одного из уже известных значений?
Например есть значения: 100, 200, 350, 400 и нужно рандомно выбрать одно из них. Или 100 или 200 и т.д.
Функция Random генерирует число в промежутках min и max и соответственно не подходит. А как работает SRandom я не понял.. :blink:
 

C2H5OH

AutoIT Гуру
Сообщения
1,473
Репутация
333
Код:
Dim $aData[4]=[100,200,350,400]
$i = Random(0,3,1)
MsgBox(0,"случайное число",$aData[$i])
 
Сообщения
50
Репутация
-1
А если к примеру рандомным значением может являться winexist из массива с определенным количеством элементов как это описать?
 

CreatoR

Must AutoIt!
Команда форума
Администратор
Сообщения
8,671
Репутация
2,481
yokselmoksel [?]
рандомным значением может являться winexist из массива с определенным количеством элементов
Код:
$i = Random(0, Ubound($aData) - 1, 1)
MsgBox(0,"случайное число",$aData[$i])
 
Сообщения
50
Репутация
-1
Код:
$i = Random(0, Ubound($larray0) - 1, 1)

while 1
	if WinExists($larray0[$i]) Then
	send ($parray[0])
	EndIf
WEnd


где, $larray0 - Массив, содержащин n элементов - заголовков окон,а $parray[0] - значение котрое нужно вставить в окно ,если искомое появилось. так вот при появлении окон из этого массива send не проходит.. почему?
 

CreatoR

Must AutoIt!
Команда форума
Администратор
Сообщения
8,671
Репутация
2,481
yokselmoksel [?]
при появлении окон из этого массива send не проходит
Так и не всегда произойдёт, это же случайный элемент в массиве, не факт что значение этого элемента это и есть то окно которое было создано.
Может лучше описать подробнее задачу...
 
Сообщения
50
Репутация
-1
CreatoR сказал(а):
yokselmoksel [?]
при появлении окон из этого массива send не проходит
Так и не всегда произойдёт, это же случайный элемент в массиве, не факт что значение этого элемента это и есть то окно которое было создано.
Может лучше описать подробнее задачу...
Задача простая - есть Radmin в котором много узлов, при вызове каждого возникает окно с логином и паролем, что бы вручную не вводить все это, написать скрипт для автоматического ввода паролей
 

CreatoR

Must AutoIt!
Команда форума
Администратор
Сообщения
8,671
Репутация
2,481
yokselmoksel [?]
что бы вручную не вводить все это, написать скрипт для автоматического ввода паролей
А в каком моменте тут участвует генерация случайного значения?

Может так:

Код:
While 1
	$aList = WinList('тут заголовок искомого окна')
	$iRandom = Random(1, Ubound($aList) - 1, 1)
	
	If Not @error And WinActive($aList[$iRandom][1]) Then
		SendKeepActive($aList[$iRandom][1])
		Send('тут отправляемое значение')
	EndIf
	
	Sleep(10)
WEnd
 
Сообщения
50
Репутация
-1
CreatoR сказал(а):
yokselmoksel [?]
что бы вручную не вводить все это, написать скрипт для автоматического ввода паролей
А в каком моменте тут участвует генерация случайного значения?

Может так:

Код:
While 1
	$aList = WinList('тут заголовок искомого окна')
	$iRandom = Random(1, Ubound($aList) - 1, 1)
	
	If Not @error And WinActive($aList[$iRandom][1]) Then
		SendKeepActive($aList[$iRandom][1])
		Send('тут отправляемое значение')
	EndIf
	
	Sleep(10)
WEnd

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

ra4o

AutoIT Гуру
Сообщения
1,165
Репутация
246
Как к этому относится случайный выбор значения ? Нужно Вам сопоставить ключ-значение , используйте ini файл или Ассоциативный массив (или словарь), например как в теме http://autoit-script.ru/index.php?topic=12092.0 . Создайте Ключ=Значение, где Ключ - название ваших окон , Значение - пароль , вы легко, в любой момент по названию окна будете получать соотвествие каждого пароля к каждому окну.
 
Сообщения
50
Репутация
-1
ra4o сказал(а):
Как к этому относится случайный выбор значения ? Нужно Вам сопоставить ключ-значение , используйте ini файл или Ассоциативный массив (или словарь), например как в теме http://autoit-script.ru/index.php?topic=12092.0 . Создайте Ключ=Значение, где Ключ - название ваших окон , Значение - пароль , вы легко, в любой момент по названию окна будете получать соотвествие каждого пароля к каждому окну.

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

ra4o

AutoIT Гуру
Сообщения
1,165
Репутация
246
Случайный выбор, я полагал, что скрипт же не знает, какое окно в данный момент может возникнуть.
И будет пароль ставить наугад ??? Окна от различных узлов Radmin отличаются между собой , например названиями ? (Проверьте это при помощи AutoIt Window Info)
 
Сообщения
50
Репутация
-1
ra4o сказал(а):
Случайный выбор, я полагал, что скрипт же не знает, какое окно в данный момент может возникнуть.
И будет пароль ставить наугад ??? Окна от различных узлов Radmin отличаются между собой , например названиями ? (Проверьте это при помощи AutoIt Window Info)

не наугад, а из Массива, .. да в массиве записаны данные заголовков окон.

я думал , что можно навреное с помощью регулярки сделать, но что-то не получилось..
 
Верх