Bonjour
J'ai découvert grace a vous (ici ) la variable $RANDOM pour generer un
entier aleatoire .
Pourriez vous m'aiclerer sur son fonctionnement ?
En effet , en l'appelant j'ai un souci : elle ne fourni que des nombres
assez grands ( > 5000 ) Moi j'aurai besoin que sans trop d'acion elle me
fournisse un nombre compris entre ( comme par hasard ) 0 et 5000
Est ce que ceci est une bonne solution ?
#!/bin/zsh
(( NB = $RANDOM ))
print $NB
print $(( NB % 5000 ))
Ou bien y a t il mieux ?
Merci .
--
Rakotomandimby Mihamina Andrianifaharana
Tel : +33 2 38 76 43 65
http://stko.dyndns.info/site_principal/Members/mihamina
J'ai découvert grace a vous (ici ) la variable $RANDOM pour generer un entier aleatoire .
Pourriez vous m'aiclerer sur son fonctionnement ?
Elle renvoie a chaque fois qu'elle est expandee un nombre entre 0 et 32767.
En effet , en l'appelant j'ai un souci : elle ne fourni que des nombres
assez grands ( > 5000 ) Moi j'aurai besoin que sans trop d'acion elle me
fournisse un nombre compris entre ( comme par hasard ) 0 et 5000
Est ce que ceci est une bonne solution ?
#!/bin/zsh (( NB = $RANDOM )) print $NB print $(( NB % 5000 ))
pas tout a fait. Premierement, les nombres entre 0 et 2767 auront une plus grande probabilite' d'apparaitre que ceux entre 2768 et 4999. Ensuite avec les pseudo-generateurs, les bits de poids faible ont souvent une sequence moins random que les bits de poids fort (comparer RANDOM % 2 et RANDOM/16384 sous bash par exemple).
Avec zsh, tu as un module de maths avec des fonctions qui te donnent des nombres flottants entre 0 et 1.
Sinon: $(( $RANDOM * 5000 / 32768 ))
-- Stephane ["stephane.chazelas" @ "free.fr"]
Rakotomandimby <mrakotom@free.fr> wrote in message
news:c1cu8m$3u5$1@news-reader2.wanadoo.fr...
J'ai découvert grace a vous (ici ) la variable $RANDOM pour generer un
entier aleatoire .
Pourriez vous m'aiclerer sur son fonctionnement ?
Elle renvoie a chaque fois qu'elle est expandee un nombre entre 0 et
32767.
En effet , en l'appelant j'ai un souci : elle ne fourni que des
nombres
assez grands ( > 5000 ) Moi j'aurai besoin que sans trop d'acion elle
me
fournisse un nombre compris entre ( comme par hasard ) 0 et 5000
Est ce que ceci est une bonne solution ?
#!/bin/zsh
(( NB = $RANDOM ))
print $NB
print $(( NB % 5000 ))
pas tout a fait. Premierement, les nombres entre 0 et 2767 auront une
plus grande probabilite' d'apparaitre que ceux entre 2768 et 4999.
Ensuite avec les pseudo-generateurs, les bits de poids faible ont
souvent une sequence moins random que les bits de poids fort (comparer
RANDOM % 2 et RANDOM/16384 sous bash par exemple).
Avec zsh, tu as un module de maths avec des fonctions qui te donnent des
nombres flottants entre 0 et 1.
J'ai découvert grace a vous (ici ) la variable $RANDOM pour generer un entier aleatoire .
Pourriez vous m'aiclerer sur son fonctionnement ?
Elle renvoie a chaque fois qu'elle est expandee un nombre entre 0 et 32767.
En effet , en l'appelant j'ai un souci : elle ne fourni que des nombres
assez grands ( > 5000 ) Moi j'aurai besoin que sans trop d'acion elle me
fournisse un nombre compris entre ( comme par hasard ) 0 et 5000
Est ce que ceci est une bonne solution ?
#!/bin/zsh (( NB = $RANDOM )) print $NB print $(( NB % 5000 ))
pas tout a fait. Premierement, les nombres entre 0 et 2767 auront une plus grande probabilite' d'apparaitre que ceux entre 2768 et 4999. Ensuite avec les pseudo-generateurs, les bits de poids faible ont souvent une sequence moins random que les bits de poids fort (comparer RANDOM % 2 et RANDOM/16384 sous bash par exemple).
Avec zsh, tu as un module de maths avec des fonctions qui te donnent des nombres flottants entre 0 et 1.
Sinon: $(( $RANDOM * 5000 / 32768 ))
-- Stephane ["stephane.chazelas" @ "free.fr"]
Stephane Chazelas
Stephane Chazelas wrote in message news:403b2a13$0$2451$ [...]
print $(( NB % 5000 ))
pas tout a fait. Premierement, les nombres entre 0 et 2767 auront une plus grande probabilite' d'apparaitre que ceux entre 2768 et 4999. [...]
Sinon: $(( $RANDOM * 5000 / 32768 ))
Well, la distribution n'est pas uniforme non plus, dans ce cas, et il ne peut pas en etre autrement vu que 32768 n'est pas mutiple de 5000, yen aura toujours au mieux 2768 qui n'auront pas la meme probabilite que les autres. C'est plus criant avec $(( $RANDOM * 32767 / 32768 )) (0 a une probabilite' de 2/32768 alors que les autres ont une probabilite' de 1/32768)
while R=$RANDOM; (( $R >= 30000 )); do :; done print "$(( $R / 6 ))"
(note que $RANDOM n'est ni Bourne, ni POSIX).
-- Stephane ["stephane.chazelas" @ "free.fr"]
Stephane Chazelas <this.address@is.invalid> wrote in message
news:403b2a13$0$2451$626a14ce@news.free.fr...
[...]
print $(( NB % 5000 ))
pas tout a fait. Premierement, les nombres entre 0 et 2767 auront une
plus grande probabilite' d'apparaitre que ceux entre 2768 et 4999.
[...]
Sinon: $(( $RANDOM * 5000 / 32768 ))
Well, la distribution n'est pas uniforme non plus, dans ce cas, et il ne
peut pas en etre autrement vu que 32768 n'est pas mutiple de 5000, yen
aura toujours au mieux 2768 qui n'auront pas la meme probabilite que les
autres. C'est plus criant avec $(( $RANDOM * 32767 / 32768 )) (0 a une
probabilite' de 2/32768 alors que les autres ont une probabilite' de
1/32768)
while R=$RANDOM; (( $R >= 30000 )); do :; done
print "$(( $R / 6 ))"
Stephane Chazelas wrote in message news:403b2a13$0$2451$ [...]
print $(( NB % 5000 ))
pas tout a fait. Premierement, les nombres entre 0 et 2767 auront une plus grande probabilite' d'apparaitre que ceux entre 2768 et 4999. [...]
Sinon: $(( $RANDOM * 5000 / 32768 ))
Well, la distribution n'est pas uniforme non plus, dans ce cas, et il ne peut pas en etre autrement vu que 32768 n'est pas mutiple de 5000, yen aura toujours au mieux 2768 qui n'auront pas la meme probabilite que les autres. C'est plus criant avec $(( $RANDOM * 32767 / 32768 )) (0 a une probabilite' de 2/32768 alors que les autres ont une probabilite' de 1/32768)
while R=$RANDOM; (( $R >= 30000 )); do :; done print "$(( $R / 6 ))"
(note que $RANDOM n'est ni Bourne, ni POSIX).
-- Stephane ["stephane.chazelas" @ "free.fr"]
Rakotomandimby
Stephane Chazelas wrote:
(note que $RANDOM n'est ni Bourne, ni POSIX).
quelle alternative ai-je en restant dans le domain des script shell ?
on peut toujours générer ça avec un tres simple code en C mais bon . Pour faire "shell rulez" ... :-)
quelle alternative ai-je en restant dans le domain des script shell ?
on peut toujours générer ça avec un tres simple code en C mais bon . Pour faire "shell rulez" ... :-)
Je ne pense pas que ce soit possible avec $RANDOM car 5000 n'est pas un diviseur de 32768
Il faudrait trouver un autre générateur aleatoire.
Sur mon cygwin, il y a une commande "gsl-randist" qui fait ce que tu veux. Mais elle n'est pas installée en standard sous linux. Ca rebvient donc a faire du code C
Mais rien n'empeche de faire un shell qui genere du C et qui le compile :-)
Rakotomandimby wrote:
Stephane Chazelas wrote:
(note que $RANDOM n'est ni Bourne, ni POSIX).
quelle alternative ai-je en restant dans le domain des script shell ?
on peut toujours générer ça avec un tres simple code en C mais bon . Pour
faire "shell rulez" ... :-)
Je ne pense pas que ce soit possible avec $RANDOM car 5000 n'est pas un
diviseur de 32768
Il faudrait trouver un autre générateur aleatoire.
Sur mon cygwin, il y a une commande "gsl-randist" qui fait ce que tu
veux. Mais elle n'est pas installée en standard sous linux. Ca rebvient
donc a faire du code C
Mais rien n'empeche de faire un shell qui genere du C et qui le compile :-)
quelle alternative ai-je en restant dans le domain des script shell ?
on peut toujours générer ça avec un tres simple code en C mais bon . Pour faire "shell rulez" ... :-)
Je ne pense pas que ce soit possible avec $RANDOM car 5000 n'est pas un diviseur de 32768
Il faudrait trouver un autre générateur aleatoire.
Sur mon cygwin, il y a une commande "gsl-randist" qui fait ce que tu veux. Mais elle n'est pas installée en standard sous linux. Ca rebvient donc a faire du code C
Mais rien n'empeche de faire un shell qui genere du C et qui le compile :-)
Stephane Chazelas
Rakotomandimby wrote in message news:c1fcdg$hbf$
Stephane Chazelas wrote:
(note que $RANDOM n'est ni Bourne, ni POSIX).
quelle alternative ai-je en restant dans le domain des script shell ?
rand() dans awk (/usr/xpg4/bin/awk ou nawk sous Solaris).
ou faire la pseudo generation a la main. Par exemple, le RANDOM de bash, c'est :
Mais rien n'empeche de faire un shell qui genere du C et qui le compile :-)
ça c'est ce que j'adore dans UNIX . Je sais bien que ça peut se faire dans les environement non-UNIX aussi mais puree, quand j'y pense , ça tue la mort ce genre de pratiques( generation de code C et compilation ) . genre mettre tout ou partie du code en C dans une variable et tout et tout ... faudra que je teste ...
<humour> un truc du genre : #!/bin/zsh print "#include <...> n #include<...> int main() {...} " | gcc -option_qui_marche ; </humour> -- Rakotomandimby Mihamina Andrianifaharana Tel : +33 2 38 76 43 65 http://stko.dyndns.info/site_principal/Members/mihamina
JustMe wrote:
Mais rien n'empeche de faire un shell qui genere du C et qui le compile
:-)
ça c'est ce que j'adore dans UNIX .
Je sais bien que ça peut se faire dans les environement non-UNIX aussi mais
puree, quand j'y pense , ça tue la mort ce genre de pratiques( generation
de code C et compilation ) . genre mettre tout ou partie du code en C dans
une variable et tout et tout ... faudra que je teste ...
<humour>
un truc du genre :
#!/bin/zsh
print "#include <...> n #include<...>
int main() {...} " | gcc -option_qui_marche ;
</humour>
--
Rakotomandimby Mihamina Andrianifaharana
Tel : +33 2 38 76 43 65
http://stko.dyndns.info/site_principal/Members/mihamina
Mais rien n'empeche de faire un shell qui genere du C et qui le compile :-)
ça c'est ce que j'adore dans UNIX . Je sais bien que ça peut se faire dans les environement non-UNIX aussi mais puree, quand j'y pense , ça tue la mort ce genre de pratiques( generation de code C et compilation ) . genre mettre tout ou partie du code en C dans une variable et tout et tout ... faudra que je teste ...
<humour> un truc du genre : #!/bin/zsh print "#include <...> n #include<...> int main() {...} " | gcc -option_qui_marche ; </humour> -- Rakotomandimby Mihamina Andrianifaharana Tel : +33 2 38 76 43 65 http://stko.dyndns.info/site_principal/Members/mihamina
Rakotomandimby
Stephane Chazelas wrote:
Stephane Chazelas wrote: rand() dans awk (/usr/xpg4/bin/awk ou nawk sous Solaris).
n'affichent rien ( je ne reprends pas la main du shell apres avoir appelé ça) ... j'avoue ne pas vraiment comprendre ce que j'ecris mais n'empeche que ces chose me semble syntaxiquement correctes ...
je me base sur ceci : http://groups.google.com/groups?hl=en&lr=&ie=UTF-8&threadm=bmmfoi%24sou%241%40news-reader5.wanadoo.fr&rnum=1&prev=/groups%3Fq%3Drandomizer%2Brakotomandimby%2Bgroup:fr.comp.os.unix%26hl%3Den%26lr%3D%26ie%3DUTF-8%26selm%3Dbmmfoi%2524sou%25241%2540news-reader5.wanadoo.fr%26rnum%3D1
n'affichent rien ( je ne reprends pas la main du shell apres
avoir appelé ça) ...
j'avoue ne pas vraiment comprendre ce que j'ecris mais
n'empeche que ces chose me semble syntaxiquement correctes ...
je me base sur ceci :
http://groups.google.com/groups?hl=en&lr=&ie=UTF-8&threadm=bmmfoi%24sou%241%40news-reader5.wanadoo.fr&rnum=1&prev=/groups%3Fq%3Drandomizer%2Brakotomandimby%2Bgroup:fr.comp.os.unix%26hl%3Den%26lr%3D%26ie%3DUTF-8%26selm%3Dbmmfoi%2524sou%25241%2540news-reader5.wanadoo.fr%26rnum%3D1
n'affichent rien ( je ne reprends pas la main du shell apres avoir appelé ça) ... j'avoue ne pas vraiment comprendre ce que j'ecris mais n'empeche que ces chose me semble syntaxiquement correctes ...
je me base sur ceci : http://groups.google.com/groups?hl=en&lr=&ie=UTF-8&threadm=bmmfoi%24sou%241%40news-reader5.wanadoo.fr&rnum=1&prev=/groups%3Fq%3Drandomizer%2Brakotomandimby%2Bgroup:fr.comp.os.unix%26hl%3Den%26lr%3D%26ie%3DUTF-8%26selm%3Dbmmfoi%2524sou%25241%2540news-reader5.wanadoo.fr%26rnum%3D1
n'affichent rien ( je ne reprends pas la main du shell apres avoir appelé ça) ... j'avoue ne pas vraiment comprendre ce que j'ecris mais n'empeche que ces chose me semble syntaxiquement correctes ...
awk va exécuter pour chaque ligne reçue le print rand(). -- BOFH excuse #159: Stubborn processes
OoO Lors de la soirée naissante du mardi 24 février 2004, vers 17:18,
Rakotomandimby <mrakotom@free.fr> disait:
rand() dans awk (/usr/xpg4/bin/awk ou nawk sous Solaris).
n'affichent rien ( je ne reprends pas la main du shell apres
avoir appelé ça) ...
j'avoue ne pas vraiment comprendre ce que j'ecris mais
n'empeche que ces chose me semble syntaxiquement correctes ...
awk va exécuter pour chaque ligne reçue le print rand().
--
BOFH excuse #159:
Stubborn processes
n'affichent rien ( je ne reprends pas la main du shell apres avoir appelé ça) ... j'avoue ne pas vraiment comprendre ce que j'ecris mais n'empeche que ces chose me semble syntaxiquement correctes ...
awk va exécuter pour chaque ligne reçue le print rand(). -- BOFH excuse #159: Stubborn processes
Rakotomandimby
Vincent Bernat wrote:
awk va exécuter pour chaque ligne reçue le print rand().
effectivement : (sous zsh)
print toto | awk 'BEGIN{srand()}{print int(rand()*5000)}'
me donne ce que je veux.
le truc c'est que si je lance cette commande plusieurs fois par secondes, elle me genere le meme nombre ... pourquoi donc ? au bout de environ une seconde le nombre obtenu change et c'est le meme nombre pendant environ une seconde et ainsi de suite .... -- Rakotomandimby Mihamina Andrianifaharana Tel : +33 2 38 76 43 65 http://stko.dyndns.info/site_principal/Members/mihamina
Vincent Bernat wrote:
awk va exécuter pour chaque ligne reçue le print rand().
effectivement :
(sous zsh)
print toto | awk 'BEGIN{srand()}{print int(rand()*5000)}'
me donne ce que je veux.
le truc c'est que si je lance cette commande plusieurs fois par secondes,
elle me genere le meme nombre ... pourquoi donc ?
au bout de environ une seconde le nombre obtenu change et c'est le meme
nombre pendant environ une seconde et ainsi de suite ....
--
Rakotomandimby Mihamina Andrianifaharana
Tel : +33 2 38 76 43 65
http://stko.dyndns.info/site_principal/Members/mihamina
awk va exécuter pour chaque ligne reçue le print rand().
effectivement : (sous zsh)
print toto | awk 'BEGIN{srand()}{print int(rand()*5000)}'
me donne ce que je veux.
le truc c'est que si je lance cette commande plusieurs fois par secondes, elle me genere le meme nombre ... pourquoi donc ? au bout de environ une seconde le nombre obtenu change et c'est le meme nombre pendant environ une seconde et ainsi de suite .... -- Rakotomandimby Mihamina Andrianifaharana Tel : +33 2 38 76 43 65 http://stko.dyndns.info/site_principal/Members/mihamina