Что нового

[Окна, Диалоги] Генератор случайных цифр

Trans

Знающий
Сообщения
257
Репутация
6
Версия AutoIt: 3.3.7.14

Описание: Ребят, помогите сделать генератор 5-ти случайных цифр от 1 до 36, но чтоб цифры не совпадали между собой...

Примечания: Надо чтоб появлялось окошко, в котором будут через запятую написаны эти цифры...
 

XpycT

Скриптер
Сообщения
380
Репутация
133
Trans
Как вариант можно сделать так
Код:
#Region Includes
#include <Array.au3>
#include <ButtonConstants.au3>
#include <EditConstants.au3>
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>
#EndRegion Includes
#NoTrayIcon

#Region ### START Koda GUI section ### Form=
$Form1 = GUICreate("Form1", 486, 67, 367, 123)
$Input1 = GUICtrlCreateInput("", 5, 5, 476, 21)
$Button1 = GUICtrlCreateButton("Сгенерировать Числа", 5, 30, 475, 25)

GUISetState(@SW_SHOW)
#EndRegion ### END Koda GUI section ###

_GenerateNumbers($Input1)

While 1
	$nMsg = GUIGetMsg()
	Switch $nMsg
		Case $GUI_EVENT_CLOSE
			Exit

		Case $Button1
			_GenerateNumbers($Input1)
	EndSwitch
WEnd

Func _GenerateNumbers($_Input)
	Local $aRandomNumbers[6] = [0], $sRandomNumbersStr = ""

	While $aRandomNumbers[0] <> 5
		$iNum = Random(1, 36, 1)

		If _ArraySearch($aRandomNumbers, $iNum) <> -1 Then ContinueLoop

		$aRandomNumbers[0] += 1
		$aRandomNumbers[$aRandomNumbers[0]] = $iNum

		$sRandomNumbersStr &= $aRandomNumbers[$aRandomNumbers[0]] & ", "
	WEnd

	$sRandomNumbersStr = StringTrimRight($sRandomNumbersStr, 2)
	GUICtrlSetData($_Input, $sRandomNumbersStr)
EndFunc
 

madmasles

Модератор
Глобальный модератор
Сообщения
7,790
Репутация
2,322
Trans,
Еще вариант.
Код:
#include <GUIConstantsEx.au3>

GUICreate('Test', 250, 75)
$nInput = GUICtrlCreateInput('', 10, 10, 240, 20)
$nButton = GUICtrlCreateButton('Сгенерировать Числа', 50, 35, 150, 30)
GUISetState()

_GenerateNumbers($nInput)

While 1
	$nMsg = GUIGetMsg()
	Switch $nMsg
		Case $GUI_EVENT_CLOSE
			Exit
		Case $nButton
			_GenerateNumbers($nInput)
	EndSwitch
WEnd

Func _GenerateNumbers($n_Input)
	Local $i_Count, $s_String, $i_Random
	While $i_Count < 6
		$i_Random = Random(1, 36, 1)
		If Not StringInStr($s_String, ' ' & $i_Random & ',') Then
			$s_String &= $i_Random & ', '
			$i_Count += 1
		EndIf
	WEnd
	GUICtrlSetData($n_Input, StringTrimRight(StringStripWS($s_String, 8), 1))
EndFunc   ;==>_GenerateNumbers
 
Автор
T

Trans

Знающий
Сообщения
257
Репутация
6
Ребята огромное спасибо за оперативность... всё работает так как надо:smile:
 
Верх