Generowanie liczb losowych

Elm:
Generowanie liczb losowych

Jak to zrobić:

Czysto funkcyjna natura Elm oznacza, że nie możesz bezpośrednio generować liczb losowych, jak mogłoby to być w językach imperatywnych. Zamiast tego używasz modułu Random w połączeniu z komendami. Oto podstawowy przykład, który generuje losową liczbę całkowitą między 1 a 100.

Najpierw zainstaluj moduł Random za pomocą elm install elm/random. Następnie zaimportuj go do pliku Elm wraz z potrzebnymi modułami HTML i zdarzeń, tak jak poniżej:

src/Main.elm

module Main exposing (..)

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

Aby to był samowystarczalny przykład, możesz dodać ten kod startowy:

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

Następnie zdefiniuj komendę do generowania losowej liczby. Obejmuje to ustawienie typu Msg do obsługi wygenerowanej liczby losowej, Model do jej przechowywania oraz funkcję aktualizującą, aby wszystko połączyć.

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 )

Aby zainicjować generowanie numeru, możesz wysłać wiadomość Generate, na przykład, poprzez przycisk w swoim widoku:

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

Kiedy klikniesz przycisk “Generate”, zostanie wyświetlona losowa liczba między 1 a 100.

To uproszczone podejście można dostosować i rozszerzyć, wykorzystując inne funkcje w module Random do produkcji losowych liczb zmiennoprzecinkowych, list lub nawet złożonych struktur danych opartych na typach niestandardowych, zapewniając ogromne możliwości dodawania nieprzewidywalności do aplikacji Elm.

Przewodnik Elm zawiera znacznie więcej informacji. Znajduje się tam również przykład rzutu sześcienną kostką.