Jump to content

Recommended Posts

Posted

How can i prevent the same random number twice. Etc Random = (1,10,1) If the first random is 9 i dont want 9 to show up at the next random number

Thanks

Posted

How can i prevent the same random number twice. Etc Random = (1,10,1) If the first random is 9 i dont want 9 to show up at the next random number

Thanks

Try this:

#include <Array.au3>

Dim $randomArray[11]
FillArrayRandom($randomArray, 1, 10, 1)
_ArrayDisplay($randomArray)

Func FillArrayRandom(ByRef $array, $min, $max, $maxOccurence, $round = 0, $maxTries = 10000)
    Local $i, $number
    For $i = 1 to UBound($array)-1
        For $n = 0 to $maxTries
            $number = Round(Random($min, $max), $round)
            If $maxOccurence = 0 OR _KeyInArrayCount($array, $number) < $maxOccurence Then ExitLoop
        Next
        If _KeyInArrayCount($array, $number) >= $maxOccurence Then Return SetError(1)
        $array[$i] = $number
    Next
EndFunc

Func _KeyInArrayCount($array, $key)
    Local $i, $n = 0
    For $i = 1 to UBound($array)-1
        If $array[$i] = $key Then $n += 1
    Next
    Return $n
EndFunc
Posted

Sure, I remembered writing a function that generated an array with random numbers that didn't repeat themselves.

It's posted in autoit wrappers :P

#515701

Broken link? PM me and I'll send you the file!

  • 1 month later...

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
×
×
  • Create New...