Генерація випадкових чисел

Elm:
Генерація випадкових чисел

Як це зробити:

Чиста функціональна природа Elm означає, що ви не можете генерувати випадкові числа безпосередньо, як ви могли б це робити в імперативних мовах. Натомість, ви використовуєте модуль Random у поєднанні з командами. Ось простий приклад, який генерує випадкове ціле число між 1 і 100.

Спочатку встановіть модуль Random за допомогою elm install elm/random. Потім імпортуйте його до вашого файлу Elm, разом з необхідними модулями HTML і подій, отак:

src/Main.elm

module Main exposing (..)

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

Для створення цього самодостатнього прикладу ви можете додати цей шаблонний код:

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

Далі, визначте команду для генерації випадкового числа. Це включає налаштування типу Msg для обробки випадкового числа після його генерації, Model для його зберігання, а також функцію оновлення, щоб усе це зв’язати разом.

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 )

Для активації генерації числа, ви б надсилали повідомлення Generate, наприклад, через кнопку у вашому представленні:

view : Model -> Html Msg
view model =
    div []
        [ div [] [ text ("Випадкове число: " ++ String.fromInt model.randomNumber) ]
        , button [ onClick Generate ] [ text "Генерувати" ]
        ]

Коли ви натискаєте на кнопку “Генерувати”, буде відображено випадкове число між 1 і 100.

Цей простий підхід можна адаптувати та розширити, використовуючи інші функції модуля Random для створення випадкових дробів, списків або навіть складних структур даних на основі користувацьких типів, надаючи величезний простір для додавання непередбачуваності до ваших програм на Elm.

Посібник Elm входить у набагато більше подробиць. Там також є приклад кидання шестигранного кубика.