Generare numeri casuali

Elm:
Generare numeri casuali

Come fare:

La natura puramente funzionale di Elm significa che non è possibile generare numeri casuali direttamente come si potrebbe fare nei linguaggi imperativi. Invece, si utilizza il modulo Random in congiunzione con i comandi. Ecco un esempio base che genera un numero intero casuale tra 1 e 100.

Prima di tutto, installa il modulo Random con elm install elm/random. Poi importalo nel tuo file Elm, insieme ai necessari moduli HTML ed eventi, così:

src/Main.elm

module Main exposing (..)

import Browser
import Html exposing (Html, button, text, div)
import Html.Events exposing (onClick)
import Random

Per rendere quest’esempio autocontenuto, puoi aggiungere questo codice standard:

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

Successivamente, definisci un comando per generare un numero casuale. Ciò implica la configurazione di un tipo Msg per gestire il numero casuale una volta generato, un Model per memorizzarlo e una funzione di aggiornamento per unire il tutto.

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 )

Per innescare la generazione di un numero, si invierebbe un messaggio Generate, ad esempio, tramite un pulsante nella tua vista:

view : Model -> Html Msg
view model =
    div []
        [ div [] [ text ("Numero Casuale: " ++ String.fromInt model.randomNumber) ]
        , button [ onClick Generate ] [ text "Genera" ]
        ]

Quando clicchi il pulsante “Genera”, verrà visualizzato un numero casuale tra 1 e 100.

Questo approccio semplicistico può essere adattato ed espanso, sfruttando altre funzioni nel modulo Random per produrre numeri casuali in virgola, liste o anche strutture dati complesse basate su tipi personalizzati, fornendo un vasto campo di gioco per aggiungere imprevedibilità alle tue applicazioni Elm.

La Guida di Elm entra molto più nel dettaglio. Ha anche un esempio su come lanciare un dado a sei facce.