Jump to content

unique random function


Go to solution Solved by abberration,

Recommended Posts

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])

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 parsingAutoIt SearchAutoIt3 PortableAutoIt3WrapperToPragmaAutoItWinGetTitle()/AutoItWinSetTitle()CodingDirToHTML5FileInstallrFileReadLastChars()GeoIP databaseGUI - Only Close ButtonGUI ExamplesGUICtrlDeleteImage()GUICtrlGetBkColor()GUICtrlGetStyle()GUIEventsGUIGetBkColor()Int_Parse() & Int_TryParse()IsISBN()LockFile()Mapping CtrlIDsOOP in AutoItParseHeadersToSciTE()PasswordValidPasteBinPosts Per DayPreExpandProtect GlobalsQueue()Resource UpdateResourcesExSciTE JumpSettings INISHELLHOOKShunting-YardSignature CreatorStack()Stopwatch()StringAddLF()/StringStripLF()StringEOLToCRLF()VSCROLLWM_COPYDATAMore Examples...

Updated: 22/04/2018

Link to comment
Share on other sites

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

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

  • Solution

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 by abberration
Link to comment
Share on other sites

 

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

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 parsingAutoIt SearchAutoIt3 PortableAutoIt3WrapperToPragmaAutoItWinGetTitle()/AutoItWinSetTitle()CodingDirToHTML5FileInstallrFileReadLastChars()GeoIP databaseGUI - Only Close ButtonGUI ExamplesGUICtrlDeleteImage()GUICtrlGetBkColor()GUICtrlGetStyle()GUIEventsGUIGetBkColor()Int_Parse() & Int_TryParse()IsISBN()LockFile()Mapping CtrlIDsOOP in AutoItParseHeadersToSciTE()PasswordValidPasteBinPosts Per DayPreExpandProtect GlobalsQueue()Resource UpdateResourcesExSciTE JumpSettings INISHELLHOOKShunting-YardSignature CreatorStack()Stopwatch()StringAddLF()/StringStripLF()StringEOLToCRLF()VSCROLLWM_COPYDATAMore Examples...

Updated: 22/04/2018

Link to comment
Share on other sites

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

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 account

Sign in

Already have an account? Sign in here.

Sign In Now
 Share

  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...