Annonce

>>> Bienvenue sur codelab! >>> Première visite ? >>> quelques mots sur codelab //// une carte des membres//// (apéros) codelab


#1 2009-02-24 21:43:21 Gestion des variables aléatoires: random() et randomSeed()

juan
modérateur
Lieu: Nancy
Date d'inscription: 2008-02-23
Messages: 14
Site web

Gestion des variables aléatoires: random() et randomSeed()



Bonjour à tous,

Je suis en train de finaliser un programme pour générer une animation, et qui fait appel à des variables aléatoires avec deux objectifs différents:
- certaines servent à rendre le déplacement d'un objet aléatoire,
- d'autres servent à générer la texture de l'objet.

LE problème est que:
- pour que la texture de l'objet soit cohérente entre chaque image de la séquence, il faut que j'initialise la série pseudo aléatoire avec randomSeed() avant de générer la texture.
- mais si je fais cela, ca fixe également la série aléatoire des déplacements...

Question: est-ce que quelqu'un sait comment gérer deux séries aléatoires en même temps: l'une répétable et l'autre non ? Ou y a-t-il un moyen avec Processing de casser l'effet de randomSeed() en cours de route ?

Remarque: bien sûr je pourrais stocker au moment de l'initialisation dans un vecteur une série aléatoire qui me servirait à générer la texture, mais cela me ferait stocker 20000 valeurs au moins.

Ou sinon, est-ce que quelqu'un connait une fonction simple (non périodique) qui donne l'impression de générer des nombres aléatoires quand on l'appelle avec un incrément constant (p.ex. x=x+1)?

Merci d'avance pour votre aide.

Hors ligne

 

#2 2009-02-24 21:58:41 Re : Gestion des variables aléatoires: random() et randomSeed()

juan
modérateur
Lieu: Nancy
Date d'inscription: 2008-02-23
Messages: 14
Site web

Re: Gestion des variables aléatoires: random() et randomSeed()



Codelab, c'est super ! Même pas besoin d'attendre une réponse pour trouver la solution !

En fait j'ai trouvé comment faire en finissant d'écrire la question. Il faut:
- initialiser avec randomSeed(0) avant de générer la texture pour que ce soit toujours la même.
- casser l'initialisation avec par exemple randomSeed(millis()%100) après la gestion de la texture.

Comme cela, les nombres aléatoires utilisés pour les déplacements ont vraiment l'air aléatoires car millis(), qui renvoit le nombre de millisecondes via l'horloge interne (je crois) n'est jamais le même, en tout cas pour mon programme qui ne tourne pas si vite que cela.

En tout cas, merci quand même !

Hors ligne

 

fil rss de cette discussion : rss

Pied de page des forums

Powered by FluxBB

codelab, graphisme & code : emoc / 2008-2024