Léa-Linux & amis :   LinuxFR   GCU-Squad   GNU
un $RANDOM limité?
Envoyé par: beginner

Je cherche a créer un nombre aléatoire qui soit compris entre 0 et n (par exemple entre 0 et 11).
Comment faire?

Je connais l'instruction $RANDOM mais si c'est en l'utilisant je ne voi pas comment.

Poste le Thursday 2 June 2005 00:02:41
Répondre     Citer    
Re: un $RANDOM limité ?
Envoyé par: nicola

Avec l’opérateur modulo %, comme ça $RANDOM % 11, comme proposé très récemment dans un script de choix aléatoire de fichier.

--
On ne prête qu’aux riches, et on a bien raison, parce que les autres remboursent difficilement.
-+- Tristan Bernard (1866-1947) -+-

Poste le Thursday 2 June 2005 06:40:24
Répondre     Citer    
Re: un $RANDOM limité?

$((RANDOM%11+0))


--
Brugmans Frédéric

[www.brugmans.net]
[triathlon.sport-challenge.be]

Poste le Thursday 2 June 2005 06:40:58
Répondre     Citer    
Re: un $RANDOM limité ?
Envoyé par: nicola

Pourquoi +0 ?

--
On ne prête qu’aux riches, et on a bien raison, parce que les autres remboursent difficilement.
-+- Tristan Bernard (1866-1947) -+-

Poste le Thursday 2 June 2005 08:26:11
Répondre     Citer    
Re: un $RANDOM limité ?

Pour donner la forme général, et pas l'exeption sans le zéro smiling smiley

--
Brugmans Frédéric

[www.brugmans.net]
[triathlon.sport-challenge.be]

Poste le Thursday 2 June 2005 17:14:08
Répondre     Citer    
Re: un $RANDOM limité?
Envoyé par: Sve@r

Faire un "$RANDOM modulo N" fonctionne mais la distribution est moins aléatoire que de faire un "($RANDOM / (VALEUR_MAX_DU_RANDOM + 1)) * N" (calculé en virgules flottantes)

Exemple classique: si on suppose que VALEUR_MAX_DU_RANDOM vaut 30, et qu'on veut un nombre entre 0 et 19. En faisant un "modulo 20", on a 2 fois plus de chances d'avoir un truc entre 0 et 9 qu'entre 10 et 20.

Voir page [dejean.benoit.free.fr] pour plus de détails...

Les calculs en virgule flottante en shell peuvent se faire en utilisant le programme "bc" avec l'option "-l"

Poste le Friday 3 June 2005 08:14:40
Répondre     Citer    
Re: un $RANDOM limité ?
Envoyé par: nicola

Citation
Sve@r
($RANDOM / (VALEUR_MAX_DU_RANDOM + 1)) * N

C’est très exactement ce que je proposais sur un autre fil assez voisin.

--
On ne prête qu’aux riches, et on a bien raison, parce que les autres remboursent difficilement.
-+- Tristan Bernard (1866-1947) -+-

Poste le Friday 3 June 2005 10:24:16
Répondre     Citer    
Re: un $RANDOM limité?

Merci pour cette belle amélioration

--
Brugmans Frédéric

[www.brugmans.net]
[triathlon.sport-challenge.be]

Poste le Friday 3 June 2005 12:19:50
Répondre     Citer    
Re: un $RANDOM limité ?
Envoyé par: Sve@r

Citation
Brugmans Frédéric
Pour donner la forme général, et pas l'exeption
sans le zéro smiling smiley

--
Brugmans Frédéric - Chercheur ( d'avenir )

Forme générale d'un random entre A et B:

int[$RANDOM % (B - A + 1)] + A

ou bien

int[($RANDOM / (VALEUR_MAX_DU_RANDOM + 1)) * (B - A + 1)] + A

Poste le Friday 3 June 2005 20:05:09
Répondre     Citer    

Veuillez vous authentifier auparavant pour commenter.

 

Ce forum !
un $RANDOM limité?
Pour poser vos questions sur les scripts shell, le Perl, le C, etc... Attention : nous ne sommes pas des spécialistes du dev, ce forum est juste pour de petites aides ponctuelles concernant le développement et les outils de développement.

Sauf mention contraire, les documentations publiées sont sous licence Creative-Commons