當前位置: 首頁>>代碼示例 >>用法及示例精選 >>正文


Elixir Enum.random用法及代碼示例


Elixir語言中 Enum.random 相關用法介紹如下。

用法:

random(enumerable)
@spec random(t()) :: element()

返回 enumerable 的隨機元素。

如果 enumerable 為空,則引發 Enum.EmptyError

該函數使用 Erlang 的:rand 模塊來計算隨機值。檢查其文檔以設置不同的隨機算法或不同的種子。

該實現基於reservoir sampling 算法。它假設返回的樣本可以放入內存;輸入 enumerable 不必這樣做,因為它隻遍曆一次。

如果將範圍傳遞給函數,則此函數將在範圍限製之間選擇一個隨機值,而不遍曆整個範圍(因此在恒定時間和恒定內存中執行)。

例子

下麵的示例使用 :exsss 偽隨機算法,因為它是 Erlang/OTP 22 的默認值:

# Although not necessary, let's seed the random algorithm
iex> :rand.seed(:exsss, {100, 101, 102})
iex> Enum.random([1, 2, 3])
2
iex> Enum.random([1, 2, 3])
1
iex> Enum.random(1..1_000)
309

相關用法


注:本文由純淨天空篩選整理自elixir-lang.org大神的英文原創作品 Enum.random(enumerable)。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。