ithelast Posted July 6, 2012 Posted July 6, 2012 I am trying to input three numbers (1,2,3 for example) into a form in a random order. Currently I am manually sending this information as follows: Send("1") Send("3") Send("2") Very simple but not random at all. I would like to be able to send these in a random order each time.
gcue Posted July 6, 2012 Posted July 6, 2012 (edited) for $x = 1 to 3 ConsoleWrite(Random(1,3, 1) & @CRLF) next you can replace consolewrite with send Edited July 6, 2012 by gcue
czardas Posted July 6, 2012 Posted July 6, 2012 #include <Array.au3> Dim $array[3] = [1,2,3] $array = _ArrayPermute($array) For $i = 1 To 100 ConsoleWrite($array[Random(1, $array[0], 1)] & @LF) Next operator64 ArrayWorkshop
gcue Posted July 6, 2012 Posted July 6, 2012 (edited) props to tom and yashield expandcollapse popup#include <array.au3> Dim $numbers[3] = [1, 2, 3] _ArrayRandom($numbers) For $x = 0 To UBound($numbers) - 1 ConsoleWrite($numbers[$x] & @CRLF) Next ; #FUNCTION# ==================================================================================================================== ; Name...........: _ArrayRandom ; Description ...: Randomize the row order of (part of) a 1D or 2D array. ; Syntax.........: _ArrayRandom(ByRef $avArray, $iStart = 0, $iEnd = 0) ; Parameters ....: $avArray - Array to randomize ; $iStart - [optional] Index of array to start at ; $iEnd - [optional] Index of array to stop at ; Return values .: Success - 1 ; Failure - 0, sets @error: ; |1 - $avArray is not an array ; |2 - $iStart is greater than $iEnd ; Author ........: Tom Vernooij ; Modified.......: ; Remarks .......: Based on Yashied's method ; Related .......: ; Link ..........: ; Example .......: No ; =============================================================================================================================== Func _ArrayRandom(ByRef $avArray, $iStart = 0, $iEnd = 0) If Not IsArray($avArray) Then Return SetError(1, 0, 0) Local $iRow, $iCol, $rRow, $Temp, $numCols = UBound($avArray, 2), $Ubound = UBound($avArray) - 1 ; Bounds checking If $iEnd < 1 Or $iEnd > $Ubound Then $iEnd = $Ubound If $iStart < 0 Then $iStart = 0 If $iStart > $iEnd Then Return SetError(2, 0, 0) ; for 2 dimentional arrays: If $numCols Then For $iRow = $iStart To $iEnd ;for each row... $rRow = Random($iStart, $iEnd, 1) ;...select a random row For $iCol = 0 To $numCols - 1 ;swich the values for each cell in the rows $Temp = $avArray[$iRow][$iCol] $avArray[$iRow][$iCol] = $avArray[$rRow][$iCol] $avArray[$rRow][$iCol] = $Temp Next Next ; for 1 dimentional arrays: Else For $iRow = $iStart To $iEnd ;for each cell... $rRow = Random($iStart, $iEnd, 1) ;...select a random cell $Temp = $avArray[$iRow] ;switch the values in the cells $avArray[$iRow] = $avArray[$rRow] $avArray[$rRow] = $Temp Next EndIf Return 1 EndFunc ;==>_ArrayRandom Edited July 6, 2012 by gcue
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