allcapone1912 Posted August 23, 2014 Share Posted August 23, 2014 i need to get random id from a list each time unique id for example list contain 1 2 3 4 if the first time function set id=1 than the second one function can set 2,3,4(all except 1) can someone give me some idea? Link to comment Share on other sites More sharing options...
guinness Posted August 23, 2014 Share Posted August 23, 2014 Use Random() to create an index of the list number and then process. So I will demonstrate with an array. #include <MsgBoxConstants.au3> Local $aList = [100, 200, 300, 99] Local $iIndex = Random(0, UBound($aList) - 1, 1) MsgBox($MB_SYSTEMMODAL, '', $aList[$iIndex]) allcapone1912 1 UDF List: _AdapterConnections() • _AlwaysRun() • _AppMon() • _AppMonEx() • _ArrayFilter/_ArrayReduce • _BinaryBin() • _CheckMsgBox() • _CmdLineRaw() • _ContextMenu() • _ConvertLHWebColor()/_ConvertSHWebColor() • _DesktopDimensions() • _DisplayPassword() • _DotNet_Load()/_DotNet_Unload() • _Fibonacci() • _FileCompare() • _FileCompareContents() • _FileNameByHandle() • _FilePrefix/SRE() • _FindInFile() • _GetBackgroundColor()/_SetBackgroundColor() • _GetConrolID() • _GetCtrlClass() • _GetDirectoryFormat() • _GetDriveMediaType() • _GetFilename()/_GetFilenameExt() • _GetHardwareID() • _GetIP() • _GetIP_Country() • _GetOSLanguage() • _GetSavedSource() • _GetStringSize() • _GetSystemPaths() • _GetURLImage() • _GIFImage() • _GoogleWeather() • _GUICtrlCreateGroup() • _GUICtrlListBox_CreateArray() • _GUICtrlListView_CreateArray() • _GUICtrlListView_SaveCSV() • _GUICtrlListView_SaveHTML() • _GUICtrlListView_SaveTxt() • _GUICtrlListView_SaveXML() • _GUICtrlMenu_Recent() • _GUICtrlMenu_SetItemImage() • _GUICtrlTreeView_CreateArray() • _GUIDisable() • _GUIImageList_SetIconFromHandle() • _GUIRegisterMsg() • _GUISetIcon() • _Icon_Clear()/_Icon_Set() • _IdleTime() • _InetGet() • _InetGetGUI() • _InetGetProgress() • _IPDetails() • _IsFileOlder() • _IsGUID() • _IsHex() • _IsPalindrome() • _IsRegKey() • _IsStringRegExp() • _IsSystemDrive() • _IsUPX() • _IsValidType() • _IsWebColor() • _Language() • _Log() • _MicrosoftInternetConnectivity() • _MSDNDataType() • _PathFull/GetRelative/Split() • _PathSplitEx() • _PrintFromArray() • _ProgressSetMarquee() • _ReDim() • _RockPaperScissors()/_RockPaperScissorsLizardSpock() • _ScrollingCredits • _SelfDelete() • _SelfRename() • _SelfUpdate() • _SendTo() • _ShellAll() • _ShellFile() • _ShellFolder() • _SingletonHWID() • _SingletonPID() • _Startup() • _StringCompact() • _StringIsValid() • _StringRegExpMetaCharacters() • _StringReplaceWholeWord() • _StringStripChars() • _Temperature() • _TrialPeriod() • _UKToUSDate()/_USToUKDate() • _WinAPI_Create_CTL_CODE() • _WinAPI_CreateGUID() • _WMIDateStringToDate()/_DateToWMIDateString() • Au3 script parsing • AutoIt Search • AutoIt3 Portable • AutoIt3WrapperToPragma • AutoItWinGetTitle()/AutoItWinSetTitle() • Coding • DirToHTML5 • FileInstallr • FileReadLastChars() • GeoIP database • GUI - Only Close Button • GUI Examples • GUICtrlDeleteImage() • GUICtrlGetBkColor() • GUICtrlGetStyle() • GUIEvents • GUIGetBkColor() • Int_Parse() & Int_TryParse() • IsISBN() • LockFile() • Mapping CtrlIDs • OOP in AutoIt • ParseHeadersToSciTE() • PasswordValid • PasteBin • Posts Per Day • PreExpand • Protect Globals • Queue() • Resource Update • ResourcesEx • SciTE Jump • Settings INI • SHELLHOOK • Shunting-Yard • Signature Creator • Stack() • Stopwatch() • StringAddLF()/StringStripLF() • StringEOLToCRLF() • VSCROLL • WM_COPYDATA • More Examples... Updated: 22/04/2018 Link to comment Share on other sites More sharing options...
mikell Posted August 23, 2014 Share Posted August 23, 2014 You can also randomly sort the list and then loop through it #include <Array.au3> Local $aArray[10] = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9] _ArrayDisplay($aArray, "1D - Original") _ArrayShuffle($aArray) _ArrayDisplay($aArray, "1D - Shuffled") Link to comment Share on other sites More sharing options...
allcapone1912 Posted August 23, 2014 Author Share Posted August 23, 2014 i get the idea but still can not apply to my script my script have to open all program only once Run('"program1"') Run('"program2"') Run('"program3"') Run('"program4"') Run('"program5"') example: script start //step 1 run a program sleep //step 2 run the second program random(except one selected early) Link to comment Share on other sites More sharing options...
Geir1983 Posted August 23, 2014 Share Posted August 23, 2014 create a two dimensional array. first dimension is the number of programs you need, second dimension contains the program name and a boolean variable you set if the program has been run. do the random function again if it selects an index with the boolean variable already set. Link to comment Share on other sites More sharing options...
Solution abberration Posted August 23, 2014 Solution Share Posted August 23, 2014 (edited) Here's a way to create a random sequence of items: #include <array.au3> Dim $array[5] = ["excel.exe", "word.exe", "notepad.exe", "calc.exe", "vlc.exe"] $randomString = "" For $i = 1 To UBound($array) Step 1 $rand = Random(0, UBound($array) - 1, 1) $randomString = $array[$rand] & "|" & $randomString _ArrayDelete($array, $rand) Next $randomString = StringTrimRight($randomString, 1) ;~ MsgBox(0, "", $randomString) $randomArray = StringSplit($randomString, "|", 2) _ArrayDisplay($randomArray) To put it to use: #include <array.au3> Dim $array[5] = ["excel.exe", "word.exe", "notepad.exe", "calc.exe", "vlc.exe"] For $i = 1 To UBound($array) Step 1 $rand = Random(0, UBound($array) - 1, 1) Run($array[$rand]) _ArrayDelete($array, $rand) Next Edited August 23, 2014 by abberration Easy MP3 | Software Installer | Password Manager Link to comment Share on other sites More sharing options...
allcapone1912 Posted August 23, 2014 Author Share Posted August 23, 2014 Here's a way to create a random sequence of items: #include <array.au3> Dim $array[5] = ["excel.exe", "word.exe", "notepad.exe", "calc.exe", "vlc.exe"] $randomString = "" For $i = 1 To UBound($array) Step 1 $rand = Random(0, UBound($array) - 1, 1) $randomString = $array[$rand] & "|" & $randomString _ArrayDelete($array, $rand) Next $randomString = StringTrimRight($randomString, 1) ;~ MsgBox(0, "", $randomString) $randomArray = StringSplit($randomString, "|", 2) _ArrayDisplay($randomArray) To put it to use: #include <array.au3> Dim $array[5] = ["excel.exe", "word.exe", "notepad.exe", "calc.exe", "vlc.exe"] For $i = 1 To UBound($array) Step 1 $rand = Random(0, UBound($array) - 1, 1) Run($array[$rand]) _ArrayDelete($array, $rand) Next Its perfect,thanks for help Link to comment Share on other sites More sharing options...
guinness Posted August 23, 2014 Share Posted August 23, 2014 allcapone1912,Replace Dim with Local or Global. Dim has its uses, this is not one of them. UDF List: _AdapterConnections() • _AlwaysRun() • _AppMon() • _AppMonEx() • _ArrayFilter/_ArrayReduce • _BinaryBin() • _CheckMsgBox() • _CmdLineRaw() • _ContextMenu() • _ConvertLHWebColor()/_ConvertSHWebColor() • _DesktopDimensions() • _DisplayPassword() • _DotNet_Load()/_DotNet_Unload() • _Fibonacci() • _FileCompare() • _FileCompareContents() • _FileNameByHandle() • _FilePrefix/SRE() • _FindInFile() • _GetBackgroundColor()/_SetBackgroundColor() • _GetConrolID() • _GetCtrlClass() • _GetDirectoryFormat() • _GetDriveMediaType() • _GetFilename()/_GetFilenameExt() • _GetHardwareID() • _GetIP() • _GetIP_Country() • _GetOSLanguage() • _GetSavedSource() • _GetStringSize() • _GetSystemPaths() • _GetURLImage() • _GIFImage() • _GoogleWeather() • _GUICtrlCreateGroup() • _GUICtrlListBox_CreateArray() • _GUICtrlListView_CreateArray() • _GUICtrlListView_SaveCSV() • _GUICtrlListView_SaveHTML() • _GUICtrlListView_SaveTxt() • _GUICtrlListView_SaveXML() • _GUICtrlMenu_Recent() • _GUICtrlMenu_SetItemImage() • _GUICtrlTreeView_CreateArray() • _GUIDisable() • _GUIImageList_SetIconFromHandle() • _GUIRegisterMsg() • _GUISetIcon() • _Icon_Clear()/_Icon_Set() • _IdleTime() • _InetGet() • _InetGetGUI() • _InetGetProgress() • _IPDetails() • _IsFileOlder() • _IsGUID() • _IsHex() • _IsPalindrome() • _IsRegKey() • _IsStringRegExp() • _IsSystemDrive() • _IsUPX() • _IsValidType() • _IsWebColor() • _Language() • _Log() • _MicrosoftInternetConnectivity() • _MSDNDataType() • _PathFull/GetRelative/Split() • _PathSplitEx() • _PrintFromArray() • _ProgressSetMarquee() • _ReDim() • _RockPaperScissors()/_RockPaperScissorsLizardSpock() • _ScrollingCredits • _SelfDelete() • _SelfRename() • _SelfUpdate() • _SendTo() • _ShellAll() • _ShellFile() • _ShellFolder() • _SingletonHWID() • _SingletonPID() • _Startup() • _StringCompact() • _StringIsValid() • _StringRegExpMetaCharacters() • _StringReplaceWholeWord() • _StringStripChars() • _Temperature() • _TrialPeriod() • _UKToUSDate()/_USToUKDate() • _WinAPI_Create_CTL_CODE() • _WinAPI_CreateGUID() • _WMIDateStringToDate()/_DateToWMIDateString() • Au3 script parsing • AutoIt Search • AutoIt3 Portable • AutoIt3WrapperToPragma • AutoItWinGetTitle()/AutoItWinSetTitle() • Coding • DirToHTML5 • FileInstallr • FileReadLastChars() • GeoIP database • GUI - Only Close Button • GUI Examples • GUICtrlDeleteImage() • GUICtrlGetBkColor() • GUICtrlGetStyle() • GUIEvents • GUIGetBkColor() • Int_Parse() & Int_TryParse() • IsISBN() • LockFile() • Mapping CtrlIDs • OOP in AutoIt • ParseHeadersToSciTE() • PasswordValid • PasteBin • Posts Per Day • PreExpand • Protect Globals • Queue() • Resource Update • ResourcesEx • SciTE Jump • Settings INI • SHELLHOOK • Shunting-Yard • Signature Creator • Stack() • Stopwatch() • StringAddLF()/StringStripLF() • StringEOLToCRLF() • VSCROLL • WM_COPYDATA • More Examples... Updated: 22/04/2018 Link to comment Share on other sites More sharing options...
allcapone1912 Posted August 25, 2014 Author Share Posted August 25, 2014 allcapone1912, Replace Dim with Local or Global. Dim has its uses, this is not one of them. Local dont work for my system ;Script Local $array[4] $array[0] = $Random1 ;step1 $array[1] = $Random2 ;step2 $array[2] = $Random3 ;step3 $array[3] = $Random4 ;step4 For $i = 1 To UBound($array) $rand = Random(0, UBound($array) - 1, 1) NEXT run() first 3 step make OK(unique) but the last one(fourth one) get an array used early in first 3 step if i replace Local with Dim everything work perfect Link to comment Share on other sites More sharing options...
mikell Posted August 25, 2014 Share Posted August 25, 2014 A little complicated #include <array.au3> Local $array[5] = ["excel.exe", "word.exe", "notepad.exe", "calc.exe", "vlc.exe"] _ArrayShuffle($array) For $i = 0 to UBound($array)-1 _ArrayDisplay($array) Msgbox(0,"", $array[0]) _ArrayDelete($array, 0) Next Link to comment Share on other sites More sharing options...
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now