[Haskell-fr] hazard

Chaddaï Fouché chaddai.fouche at gmail.com
Wed Feb 13 07:49:21 EST 2008


Le 13/02/08, Dupont Corentin<corentin.dupont at gmail.com> a écrit :
> J'ai trouvé ça:
> haz = (randoms (mkStdGen 5) :: [Double])
> Qui me donne une liste de nombres psoeudo aléatoires.
> Comme l'utiliser?
> Mon problème, c'est que je ne peut l'utiliser qu'une fois, si je
> l'utilise une deuxième fois je retrouve les mêmes nombres ce qui ne me
> convient pas...
> En effet je voudrais obtenir une liste de positions à chaque fois
> différente à chaque essais.

Ce n'est pas possible tant que tu n'utilises pas la monade IO... En
effet Haskell a la propriété de transparence référentielle qui dit
qu'une fonction retourne toujours la même chose avec les mêmes
arguments.
Avec mkStdGen 5 tu crées un générateur aléatoire, mais il est
complètement déterminé par 5.

Un exemple d'usage de IO :
> main = do
>   g <- newStdGen
>   print . take 10 . randomRs (0.0, 20.0) $ g

A chaque fois que tu lanceras ce programme, la séquence sera différente.

-- 
Jedaï


More information about the Haskell-fr mailing list