| Safe Haskell | Safe-Inferred |
|---|---|
| Language | Haskell2010 |
Reloto.Random
Contents
Description
Extraction d’aléa.
NOTE: Afin de ne produire que des bits qui ont chacun
une probabilité d’un sur deux d’être à True ou à False,
les fonctions de ce module n’extraient que les bits
des combinaisons de rang lexicographique strictement inférieur
à la plus grande puissance de 2 inférieure ou égale
au nombre de combinaisons possibles.
Car il n’y a que 2^n combinaisons de n bits.
Et que parmi ces combinaisons un bit a une probabilité
de 2^(n-1) sur 2^n soit de 1/2 d’être à True, et autant d’être à False.
Synopsis
- equiprobableBits :: Integer -> Int
- randomOfCombin :: Integer -> Integer -> [Integer] -> [Bool]
- randomOfSequence :: Integer -> Integer -> [Integer] -> [Bool]
- randomOf6aus49 :: (Integer, Integer, Integer, Integer, Integer, Integer) -> Integer -> [Bool]
- randomOfEuroMillions :: (Integer, Integer, Integer, Integer, Integer) -> (Integer, Integer) -> [Bool]
- randomOfOrderedEuroMillions :: (Integer, Integer, Integer, Integer, Integer) -> (Integer, Integer) -> [Bool]
- randomOfFrenchLoto :: (Integer, Integer, Integer, Integer, Integer) -> Integer -> [Bool]
- randomOfOrderedFrenchLoto :: (Integer, Integer, Integer, Integer, Integer) -> Integer -> [Bool]
- randomOfSwissLoto :: (Integer, Integer, Integer, Integer, Integer, Integer) -> Integer -> [Bool]
Documentation
equiprobableBits :: Integer -> Int Source #
equiprobableBits n retourne le nombre maximal de bits de i
équiprobables quand i parcourt [0..n-1].
Ce nombre est le plus grand b dans [0..] tel que 2^b-1 <= n.
equiprobableBits<$>[0..17] == [0,1,1,2,2,2,2,3,3,3,3,3,3,3,3,4,4,4]
randomOfCombin :: Integer -> Integer -> [Integer] -> [Bool] Source #
randomOfCombin n k c retourne des bits équiprobables donnés
par la combinaison c obtenue par tirage équiprobable
d’une combinaison de k entiers parmi [1..n].
WARNING: aucun bit n’est extrait du tirage c
dans le cas où c a un rang lexicographique encodé par
un nombre de bits strictement supérieur à .equiprobableBits (nnCkk)
randomOfSequence :: Integer -> Integer -> [Integer] -> [Bool] Source #
randomOfSequence n k a retourne des bits équiprobables donnés
par l’arrangement a obtenue par tirage équiprobable
d’une combinaison de k entiers parmi [1..n].
WARNING: aucun bit n’est extrait du tirage a
dans le cas où a a un rang lexicographique encodé par
un nombre de bits strictement supérieur à .equiprobableBits (nnAkk)
Aléas publics
randomOf6aus49 :: (Integer, Integer, Integer, Integer, Integer, Integer) -> Integer -> [Bool] Source #
randomOf6aus49 nums numComplementaire retourne les bits équiprobables donnés
par un tirage du 6aus49.
Il peut produire 26 bits équiprobables :
sum $ equiprobableBits <$> [49`nCk`6, 10`nCk`1]
randomOf6aus49(1,2,3,4,5,6) 1 ==replicate(23+3) FalserandomOf6aus49(7,14,20,30,37,45) 8 ==replicate(23+3) TruecombinOfRank49 6 (2 ^equiprobableBits(49nCk6) - 1) == [7,14,20,30,37,45]combinOfRank49 6 (2 ^equiprobableBits(49nCk6)) == [7,14,20,30,37,46]randomOf6aus49(7,14,20,30,37,45) 1 ==replicate23 True ++replicate3 FalserandomOf6aus49(7,14,20,30,37,46) 1 == [False,False,False]combinOfRank10 1 (2 ^equiprobableBits(10nCk1) - 1) == [8]combinOfRank10 1 (2 ^equiprobableBits(10nCk1)) == [9]randomOf6aus49(7,14,20,30,37,46) 8 == [True,True,True]randomOf6aus49(7,14,20,30,37,46) 9 == []
randomOfEuroMillions :: (Integer, Integer, Integer, Integer, Integer) -> (Integer, Integer) -> [Bool] Source #
randomOfEuroMillions nums numComplementaires retourne les bits équiprobables donnés
par un tirage de l’EuroMillions.
Il peut produire 27 bits équiprobables :
sum $ equiprobableBits <$> [50`nCk`5, 12`nCk`2]
randomOfEuroMillions(1,2,3,4,5) (1,2) ==replicate(21+5) FalserandomOfEuroMillions(29,36,38,41,48) (1,9) ==replicate(21+5) TruecombinOfRank50 5 (2 ^equiprobableBits(50nCk5) - 1) == [29,36,38,41,48]combinOfRank50 5 (2 ^equiprobableBits(50nCk5)) == [29,36,38,41,49]randomOfEuroMillions(29,36,38,41,48) (1,2) ==replicate21 True ++replicate6 FalserandomOfEuroMillions(29,36,38,41,49) (1,2) == [False,False,False,False,False,False]combinOfRank12 2 (2 ^equiprobableBits(12nCk2) - 1) == [10,11]combinOfRank12 2 (2 ^equiprobableBits(12nCk2)) == [10,12]randomOfEuroMillions(29,36,38,41,49) (10,11) == [True,True,True,True,True,True]randomOfEuroMillions(29,36,38,41,49) (10,12) == []
randomOfOrderedEuroMillions :: (Integer, Integer, Integer, Integer, Integer) -> (Integer, Integer) -> [Bool] Source #
34 bits équiprobables en allant voir l’ordre du tirage :
sum $ equiprobableBits <$> [50`nAk`5, 12`nAk`2]
randomOfFrenchLoto :: (Integer, Integer, Integer, Integer, Integer) -> Integer -> [Bool] Source #
randomOfFrenchLoto nums numComplementaire retourne les bits équiprobables donnés
par un tirage du Loto Français.
Il peut produire 23 bits équiprobables :
sum $ equiprobableBits <$> [49`nCk`5, 10`nCk`1]
randomOfFrenchLoto(1,2,3,4,5) 1 ==replicate(20+3) FalserandomOfFrenchLoto(7,27,36,40,46) 8 ==replicate(20+3) TruecombinOfRank49 5 (2 ^equiprobableBits(49nCk5) - 1) == [7,27,36,40,46]combinOfRank49 5 (2 ^equiprobableBits(49nCk5)) == [7,27,36,40,47]randomOfFrenchLoto(7,27,36,40,46) 1 ==replicate20 True ++replicate3 FalserandomOfFrenchLoto(7,27,36,40,47) 1 == [False,False,False]combinOfRank10 1 (2 ^equiprobableBits(10nCk1) - 1) == [8]combinOfRank10 1 (2 ^equiprobableBits(10nCk1)) == [9]randomOfFrenchLoto(7,27,36,40,47) 8 == [True,True,True]randomOfFrenchLoto(7,27,36,40,47) 9 == []
randomOfOrderedFrenchLoto :: (Integer, Integer, Integer, Integer, Integer) -> Integer -> [Bool] Source #
30 bits équiprobables en allant voir l’ordre du tirage :
sum $ equiprobableBits <$> [49`nAk`5, 10`nAk`1]
randomOfSwissLoto :: (Integer, Integer, Integer, Integer, Integer, Integer) -> Integer -> [Bool] Source #
randomOfSwissLoto nums numComplementaire retourne les bits équiprobables donnés
par un tirage du SwissLoto.
Il peut produire 24 bits équiprobables :
sum $ equiprobableBits <$> [42`nCk`6, 6`nCk`1]
randomOfSwissLoto(1,2,3,4,5,6) 1 ==replicate(22+2) FalserandomOfSwissLoto(10,12,25,28,33,38) 4 ==replicate(22+2) TruecombinOfRank42 6 (2 ^equiprobableBits(42nCk6) - 1) == [10,12,25,28,33,38]combinOfRank42 6 (2 ^equiprobableBits(42nCk6)) == [10,12,25,28,33,39]randomOfSwissLoto(10,12,25,28,33,38) 1 ==replicate22 True ++replicate2 FalserandomOfSwissLoto(10,12,25,28,33,39) 1 == [False,False]combinOfRank6 1 (2 ^equiprobableBits(6nCk1) - 1) == [4]combinOfRank6 1 (2 ^equiprobableBits(6nCk1)) == [5]randomOfSwissLoto(10,12,25,28,33,39) 4 == [True,True]randomOfSwissLoto(10,12,25,28,33,39) 5 == []