1から5までの数字を含むリストがあるとします。エルムの関数shuffleList
を引数として整数のリストを取り、リストの無作為バージョンを返すように書く方法を教えてください。それはOKですエルムのリストをシャッフルするには?
shuffleList [1,2,3,4,5]
{-5,1,2,4,3-}
例えば、あなたはおそらく、ELM-コミュニティ/ランダム余分からshuffle
機能が欲しいランダムシード
1から5までの数字を含むリストがあるとします。エルムの関数shuffleList
を引数として整数のリストを取り、リストの無作為バージョンを返すように書く方法を教えてください。それはOKですエルムのリストをシャッフルするには?
shuffleList [1,2,3,4,5]
{-5,1,2,4,3-}
例えば、あなたはおそらく、ELM-コミュニティ/ランダム余分からshuffle
機能が欲しいランダムシード
をハードコーディングします。あなたがが手でこれを実行する場合は、次の操作を行うことができます初期Seed
与え、Ellie
にその使用例は
import List.Extra exposing (getAt, removeAt)
import Random exposing (Seed, int, step)
shuffleList : Seed -> List a -> List a
shuffleList seed list =
shuffleListHelper seed list []
shuffleListHelper : Seed -> List a -> List a -> List a
shuffleListHelper seed source result =
if List.isEmpty source then
result
else
let
indexGenerator =
int 0 ((List.length source) - 1)
(index, nextSeed) =
step indexGenerator seed
valAtIndex =
getAt index source
sourceWithoutIndex =
removeAt index source
in
case valAtIndex of
Just val ->
shuffleListHelper nextSeed sourceWithoutIndex (val :: result)
Nothing ->
Debug.crash "generated an index outside list"
例(これはelm-community/list-extraパッケージから一部の機能を使用しています) Ellie
http://package.elm-lang.org/packages/elm-community/elm-random-extra/1.0.2上でこれを使用するとRandom.Array.shuffleは、これだけのアレイ、shuffleに変換し、バック変換した
私はそのコードを動作させることができませんでした –
http://package.elm-lang.org/pa ckages/mgold/Elm-Random-Sampling/2.0.3/Random-Array –
このライブラリのコード例は機能しません –
http://tylerscode.com/2016/06/list-shuffle-elm/ – wintvelt