📜  Elixir 随机数 - Elixir (1)

📅  最后修改于: 2023-12-03 15:30:36.873000             🧑  作者: Mango

Elixir 随机数

Elixir 提供了许多生成随机数的功能。本文将介绍 Elixir 中的随机数生成器和常见的用法。

生成随机整数

我们可以使用 :rand.uniform/1 函数来生成一个随机的整数。这个函数需要传入一个整数值,表示要生成的范围。例如,下面代码将在 1 到 10 之间生成一个随机数:

:rand.uniform(10)

生成的结果可能是 1、2、3、4、5、6、7、8 或 9 中的任意一个数字。我们可以用 Enum.random/1 函数生成一个列表中的随机元素。例如:

[1, 2, 3, 4, 5] |> Enum.random()

这个函数会从列表中随机选取一个元素,比如可能返回 2。

生成随机浮点数

我们也可以使用 :rand.uniform/0 函数来生成一个 [0, 1) 之间的随机浮点数。例如:

:rand.uniform()

生成的结果可能是 0.120123、0.340935 或者 0.999999 等任意一个介于 0 到 1 之间的数字。

如果我们想生成一个指定范围内的随机浮点数,可以通过计算将上面生成的随机浮点数映射到我们想要的范围上。例如,如果我们想要生成一个 10 到 20 之间的随机浮点数,可以使用下面的代码:

:rand.uniform() * 10.0 + 10.0

这里,rand.uniform() 生成了一个介于 0 到 1 之间的数字,然后我们将它乘以 10 并加上 10 得到了我们想要的随机浮点数。

生成随机字母和数字

如果我们想要生成随机的字母和数字组合,可以使用 :crypto.rand_bytes/1 函数来生成指定数量的随机字节。例如,下面的代码将生成一个长度为 8 的随机字母和数字组合:

:crypto.rand_bytes(8) |> Base.encode32()

这里,rand_bytes(8) 生成了 8 个随机字节,然后我们使用 Base.encode32/1 将它们编码成了字母和数字组合。Base.encode32/1 函数将字节编码成 32 种不同的字符,这些字符由 A 到 Z、以及 2 到 7 这些数字组成。

以上就是 Elixir 中生成随机数的常见方式。如果您有更好的方法,请留言分享!