Processing > Hasard

Contents (hide)

  1. 1. random()
  2. 2. Probabilité
  3. 3. noise()
  4. 4. Urne

1.  random()

La fonction random()  génère un nombre à virgule aléatoire . Elle peut être utilisée sous deux formes:

float a = random(10); // a prend comme valeur un nombre à virgule entre 0 et 10
float b = random(50,60); // b prend comme valeur un nombre à virgule entre 50 et 60

On peut générer un nombre entier aléatoire ainsi:

int i = int(random(50,60));
  1. probabilité

2.  Probabilité

Dans l'exemple suivant, nous déterminons un évènement avec 10% de probabilité d'être exécuté:

float r = random(100);
if ( r < 10 ) { // 10 chances sur 100, donc 10%
        // Evenement
}

3.  noise()

La fonction noise() retourne toujours un nombre à virgule aléatoire entre 0 et 1. Plus l'index est incrémenté rapidement, plus la variation entre les nombres générés sera grande.

float n = noise(frameCount*0.01);

4.  Urne

class Urn {
        private int size;
        private int[] contents;
        private int current_size;

        Urn(int size) {
                if ( size < 1 ) size = 10;
                this.size = size;

                contents = new int[size];
                reset();
        }

        int get() {
                if ( current_size > 0 ) {
                        int index = int(random(current_size)); // choose a # between 0 and size
                        int value = contents[index];
                        contents[index] = contents[current_size-1]; // move the last element in the urn
                        current_size = current_size - 1;
                        return value;
                }
                else {
                        return -1;
                }
        }


        void reset() {
                current_size = size;
                for (int i = 0; i < size; i++) {
                        contents[i] = i; // fill the array with a sequence of integers starting with 0
                }

        }

}