Safe Haskell | Safe |
---|---|
Language | Haskell2010 |
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
(nnCk
k)
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
(nnAk
k)
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) TruecombinOfRank
49 6 (2 ^equiprobableBits
(49nCk
6) - 1) == [7,14,20,30,37,45]combinOfRank
49 6 (2 ^equiprobableBits
(49nCk
6)) == [7,14,20,30,37,46]randomOf6aus49
(7,14,20,30,37,45) 1 ==replicate
23 True ++replicate
3 FalserandomOf6aus49
(7,14,20,30,37,46) 1 == [False,False,False]combinOfRank
10 1 (2 ^equiprobableBits
(10nCk
1) - 1) == [8]combinOfRank
10 1 (2 ^equiprobableBits
(10nCk
1)) == [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) TruecombinOfRank
50 5 (2 ^equiprobableBits
(50nCk
5) - 1) == [29,36,38,41,48]combinOfRank
50 5 (2 ^equiprobableBits
(50nCk
5)) == [29,36,38,41,49]randomOfEuroMillions
(29,36,38,41,48) (1,2) ==replicate
21 True ++replicate
6 FalserandomOfEuroMillions
(29,36,38,41,49) (1,2) == [False,False,False,False,False,False]combinOfRank
12 2 (2 ^equiprobableBits
(12nCk
2) - 1) == [10,11]combinOfRank
12 2 (2 ^equiprobableBits
(12nCk
2)) == [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 #
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) TruecombinOfRank
49 5 (2 ^equiprobableBits
(49nCk
5) - 1) == [7,27,36,40,46]combinOfRank
49 5 (2 ^equiprobableBits
(49nCk
5)) == [7,27,36,40,47]randomOfFrenchLoto
(7,27,36,40,46) 1 ==replicate
20 True ++replicate
3 FalserandomOfFrenchLoto
(7,27,36,40,47) 1 == [False,False,False]combinOfRank
10 1 (2 ^equiprobableBits
(10nCk
1) - 1) == [8]combinOfRank
10 1 (2 ^equiprobableBits
(10nCk
1)) == [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 #
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) TruecombinOfRank
42 6 (2 ^equiprobableBits
(42nCk
6) - 1) == [10,12,25,28,33,38]combinOfRank
42 6 (2 ^equiprobableBits
(42nCk
6)) == [10,12,25,28,33,39]randomOfSwissLoto
(10,12,25,28,33,38) 1 ==replicate
22 True ++replicate
2 FalserandomOfSwissLoto
(10,12,25,28,33,39) 1 == [False,False]combinOfRank
6 1 (2 ^equiprobableBits
(6nCk
1) - 1) == [4]combinOfRank
6 1 (2 ^equiprobableBits
(6nCk
1)) == [5]randomOfSwissLoto
(10,12,25,28,33,39) 4 == [True,True]randomOfSwissLoto
(10,12,25,28,33,39) 5 == []