Skip to content

Commit 67a14f4

Browse files
committed
Initialiser@: passage valeur + protec.
1 parent 01a5745 commit 67a14f4

File tree

1 file changed

+14
-3
lines changed

1 file changed

+14
-3
lines changed

microalg.l

Lines changed: 14 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -783,12 +783,23 @@ Alors que :
783783
: (Entier@ 0 1000)
784784
-> 422 # Cette valeur dépendra du moment où la commande `Initialiser@`
785785
# aura été exécutée, au moins à la milliseconde près.
786+
787+
**Utilisation avancée** : en passant une valeur à `Initialiser@` comprise entre
788+
0 (inclus) et 2 puissance 32 (exclus), on initialise l’état du générateur à
789+
cette valeur.
786790
")
787791
(put 'Initialiser@ 'text "Commande `Initialiser@`.")
788-
(de Initialiser@ ()
789-
# Avec EmuLisp, seed ne supporte que les entiers 32 bits signés.
790-
(seed (- (% (+ (time) (usec)) (** 2 32)) (** 2 31)))
792+
(de Initialiser@ (x)
793+
(let 2^32 (** 2 32)
794+
(ifn x (setq !etat@ (% (+ (time) (usec)) 2^32))
795+
(if (or (lt0 (- x 0)) (le0 (- 2^32 x)))
796+
(quit (pack "Initialiser@ n’accepte que des valeurs entre "
797+
"0 (inclus) et 2 puissance 32 (exclus).") x)
798+
(setq !etat@ x)
799+
)
800+
)
791801
Rien)
802+
)
792803
(put 'Entier@ 'doc
793804
"Retourne un nombre entier pseudo-aléatoire dans [`min`;`max`] (les deux
794805
paramètres entiers).

0 commit comments

Comments
 (0)