# unique random function

Go to solution Solved by abberration,

## Recommended Posts

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?

##### Share on other sites

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])```
##### Share on other sites

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")```
##### 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)
##### 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.

##### 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
##### 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

##### 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
##### Share on other sites

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```

## Create an account

Register a new account

• ### Recently Browsing   0 members

×

• Wiki

• Back

• #### Beta

• Git
• FAQ
×
• Create New...