• 🏆 Texturing Contest #33 is OPEN! Contestants must re-texture a SD unit model found in-game (Warcraft 3 Classic), recreating the unit into a peaceful NPC version. 🔗Click here to enter!

Picking random variable in an array once only

Status
Not open for further replies.
Level 13
Joined
Mar 29, 2012
Messages
530
x[1] = 50
x[2] = 52
x[3] = 54
x[4] = 56
x[5] = 58

I have these five array variables and I want to pick each one by random without picking it back twice or more.
How do I achieve this? Thanks in advance.
 
Level 39
Joined
Feb 27, 2007
Messages
5,027
If you want to be able to use this data again without overwriting it then first clone it into a new array and work with that array; if you don't care about losing the data you can just work with x directly.
  1. Randomize a number R from 1-N. N is initially 5 (the total available to be randomly picked), but will be reduced later
  2. Do whatever you want with x[R]
  3. Replace x[R] with x[N] (swap it into its position)
  4. Reduce N by 1
  5. Repeat
If you just want to keep using that same array instead of cloning you can also use the [InitialN + 1]th index (or the [0]th index) to temporarily store x[R] before overwriting it:
  • x[R] -> x[InitialN + 1]
  • x[N] -> x[R]
  • x[InitialN + 1] -> x[N]
 
Status
Not open for further replies.
Top