📅  最后修改于: 2023-12-03 15:30:36.873000             🧑  作者: Mango
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 中生成随机数的常见方式。如果您有更好的方法,请留言分享!