• 🏆 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!
  • It's time for the first HD Modeling Contest of 2024. Join the theme discussion for Hive's HD Modeling Contest #6! Click here to post your idea!

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
4,994
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