Elm:
Génération de nombres aléatoires
Comment faire :
La nature purement fonctionnelle d’Elm signifie que vous ne pouvez pas générer des nombres aléatoires directement comme vous pourriez le faire dans les langages impératifs. Au lieu de cela, vous utilisez le module Random
conjointement avec des commandes. Voici un exemple simple qui génère un entier aléatoire entre 1 et 100.
D’abord, installez le module Random
avec elm install elm/random
. Ensuite, importez-le dans votre fichier Elm, ainsi que les modules HTML et événementiels nécessaires, comme ceci :
src/Main.elm
module Main exposing (..)
import Browser
import Html exposing (Html, button, text, div)
import Html.Events exposing (onClick)
import Random
Pour que cet exemple soit autonome, vous pouvez ajouter ce code de base :
main =
Browser.element { init = init, update = update, subscriptions = subscriptions, view = view }
init : () -> (Model, Cmd Msg)
init _ =
(Model 0, Cmd.none)
subscriptions : Model -> Sub Msg
subscriptions _ =
Sub.none
Ensuite, définissez une commande pour générer un nombre aléatoire. Cela implique de mettre en place un type Msg
pour gérer le nombre aléatoire une fois qu’il est généré, un Model
pour le stocker, et une fonction de mise à jour pour tout lier.
type Msg
= Generate
| NewRandom Int
type alias Model = { randomNumber : Int }
update : Msg -> Model -> (Model, Cmd Msg)
update msg model =
case msg of
Generate ->
( model, Random.generate NewRandom (Random.int 1 100) )
NewRandom number ->
( { model | randomNumber = number }, Cmd.none )
Pour déclencher la génération d’un nombre, vous pourriez envoyer un message Generate
, par exemple, via un bouton dans votre vue :
view : Model -> Html Msg
view model =
div []
[ div [] [ text ("Nombre Aléatoire : " ++ String.fromInt(model.randomNumber)) ]
, button [ onClick Generate ] [ text "Générer" ]
]
Lorsque vous cliquez sur le bouton “Générer”, un nombre aléatoire entre 1 et 100 sera affiché.
Cette approche simpliste peut être adaptée et élargie, en tirant parti des autres fonctions du module Random
pour produire des flottants aléatoires, des listes, ou même des structures de données complexes basées sur des types personnalisés, offrant un vaste terrain de jeu pour ajouter de l’imprévisibilité à vos applications Elm.
Le Guide Elm va bien plus en détail. Il a aussi un exemple pour lancer un dé à six faces.