Need help with randomizing algorithm


#1

I already understood how to make algorithm that will randomly select event

*rand x 1 4
	*if (x = 1)
		*goto conf1
	*if (x = 2)
		*goto conf2
	*if (x = 3)
		*goto conf3
	*if (x = 4)
		*goto conf4

But I can’t inderastand how to make exclusion or ban for random event that just already used.
I wish to make series of random event that mustn’t repeat itself. Series like 1 3 2 4 or 4 2 1 3, but not like 1 1 2 3.


#2

If it’s not important that it be perfectly random, the easy way is to add a check if one scenario gets run, and if it has, just add one. So:

*rand foo 1 4
  *if foo = 1
    *label foo_1
    *if foo_1_has_run
      *goto foo_2
    *else
      *goto conf1
  *if foo = 2
    *label foo_2
    *if foo_2_has_run
      *goto foo_3
    *else
      *goto conf2
...

If it has to be perfectly even chances each time, it gets a little more complex.


#3

A little more complex - but how exactly? )


#4

Would this work, Reaperoa?

*label randomstart
*rand foo 1 4
  *if foo = 1
    *label foo_1
    *if foo_1_has_run
      *goto randomstart
    *else
      *goto conf1
  *if foo = 2
    *label foo_2
    *if foo_2_has_run
      *goto randomstart
    *else
      *goto conf2

#5

As above Reaperoa’s would work, but if you want something ready-baked, I think this is almost exactly what you’re after?

You could just replace the “Scene X” text with a *gosub_scene command of your choosing.
As long as you then *return from that scene (not *goto_scene), your *temp variables will still be in effect, so you could use it as a sort of randomized ‘switchboard’ scene.

Running Example: http://tinyurl.com/o2f9j9o


#6

This is exactly what I want - tnx! ))) Why this stuff don’t place in official site, in the tutorial pages?


#7

Great. It’s not on the official site because it isn’t official (i.e. wrote by COG), but that wiki is just as valuable of a CS resource, definitely worth a bookmark!