Генерация случайных чисел

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 рассказывает об этом гораздо подробнее. Там также есть пример бросания шестигранного кубика.