@@ -1317,13 +1317,42 @@ normal_s(Mean, Variance, State0) when 0 =< Variance ->
13171317 {Mean + (math :sqrt (Variance ) * X ), State }.
13181318
13191319
1320- -spec shuffle (list ()) -> list ().
1320+ -doc """
1321+ Shuffle a list.
1322+
1323+ Like `shuffle_s/2` but operates on the state stored in
1324+ the process dictionary. Returns the shuffled list.
1325+ """ .
1326+ -doc (#{group => <<" Plug-in framework API" >>,since => <<" OTP 29.0" >>}).
1327+ -spec shuffle (List :: list ()) -> ShuffledList :: list ().
13211328shuffle (List ) ->
13221329 {ShuffledList , State } = shuffle_s (List , seed_get ()),
13231330 _ = seed_put (State ),
13241331 ShuffledList .
13251332
1326- -spec shuffle_s (list (), state ()) -> {list (), state ()}.
1333+ -doc """
1334+ Shuffle a list.
1335+
1336+ From the specified `State` shuffles the elements in argument `List` so that,
1337+ given that the [PRNG algorithm](#algorithms) in `State` is perfect,
1338+ every possible permutation of the elements in the returned `ShuffledList`
1339+ has the same probability.
1340+
1341+ In other words, the quality of the shuffling depends only on
1342+ the quality of the backend [random number generator](#algorithms)
1343+ and [seed](`seed_s/1`). If a cryptographically unpredictable
1344+ shuffling is needed, use for example `crypto:rand_seed_alg_s/1`
1345+ to initialize the random number generator.
1346+
1347+ Returns the shuffled list [`ShuffledList`](`t:list/0`)
1348+ and the [`NewState`](`t:state/0`).
1349+ """ .
1350+ -doc (#{group => <<" Plug-in framework API" >>,since => <<" OTP 29.0" >>}).
1351+ -spec shuffle_s (List , State ) ->
1352+ {ShuffledList :: list (), NewState :: state ()}
1353+ when
1354+ List :: list (),
1355+ State :: state ().
13271356shuffle_s (List , {#{bits := _ , next := Next } = AlgHandler , R0 })
13281357 when is_list (List ) ->
13291358 WeakLowBits = maps :get (weak_low_bits , AlgHandler , 0 ),
0 commit comments