在现代Web开发中,前端应用程序的需求越来越复杂,需要产生随机数来模拟数据、进行算法测试等等的需求也越来越多。在这种情况下,许多开发人员都采用了随机数生成器如Math.random()。但是,这种方法在很多方面都存在问题,比如它的随机性不够高、无法重现等等。因此,一个更好的随机数生成器是必要的。
在本文中,将介绍一个npm包@thi.ng/random,它是一款高质量的随机数生成器,采用TypeScript编写,并提供了许多有用的函数,使其变得更加易于使用。此外,@thi.ng/random还有一些高级功能,如序列生成和游程编码。
安装
安装@thi.ng/random可以使用npm:
--- ------- --------------
或者使用yarn:
---- --- --------------
使用
@thi.ng/random提供了许多有用的函数,下面分别介绍一下。
random
生成返回0到1之间浮点数的函数:
------ - ------ - ---- ----------------- ---------------------- -- --------------------
也可以通过传入min和max的值产生在指定范围的随机数:
----------------------- ----- -- ------------------
int
生成返回0到n-1之间整数的函数:
------ - --- - ---- ----------------- --------------------- -- -
可以传入一个min和max指定范围:
------------------ ---- -- -
weightedRandom
生成根据权重生成值的函数:
------ - -------------- - ---- ----------------- ------------ ---------------- --- --------- --- ---------- --- ---------- -- -- -- ------
shuffle
生成随机排序数组的函数:
------ - ------- - ---- ----------------- ----------------------- -- -- -- ----- -- --- -- -- -- --
也可以通过传入一个rng函数来控制随机性:
----------------------- -- -- -- --- -- -- ------ -- --- -- -- -- --
Seq
Seq类可以用于生成随机序列。默认情况下,它生成[0,1]之间的浮点数序列:
------ - --- - ---- ----------------- --------------- ------------------------- -- -------------------- ------------------- ------------------- ------------------- -------------------
也可以通过传入一个与Math.random类似的rng函数来控制随机性:
------------ --- ------ -- ---- -------- ---------- -- -- ----- ---- ---- ---- ----
runLengthEncoding
runLengthEncoding函数可以将数字序列压缩为游程编码:
------ - ----------------- - ---- ----------------- ------------ --------------------- -- -- -- -- -- -- -- -- --- -- -- ---- --- --- --- --- --- --- --- --- ---
示例
下面是一个简单的使用示例。该程序使用@thi.ng/random生成一个包含10个随机数的数组,并将数组中的每个元素乘以2:
------ - --- - ---- ---------------------- ------ - ---- ------ - ---- ----------------- ----- ------ - --- ----- --------- -------- -- - - -- ----------- --------------------
结论
@thi.ng/random是一个高质量的随机数生成器,提供了许多有用的函数,包括生成随机数、生成整数、加权随机、随机排序、序列生成和游程编码。它的简单、易用和高级功能使其成为现代Web开发中不可或缺的一部分。
来源:JavaScript中文网 ,转载请联系管理员! 本文地址:https://www.javascriptcn.com/post/5eedab52b5cbfe1ea0610721