高级随机

354次阅读
没有评论

共计 2661 个字符,预计需要花费 7 分钟才能阅读完成。

高级随机数生成器

高级随机数生成器(Advanced Random)提供了先进的伪随机数生成(PRNG)表达式,包括二维和三维噪声函数,如 Perlin 噪声(在插件中称为“经典噪声”)。这些对于程序生成非常有用,例如提供无尽的独特关卡设计。

它还提供了带种子的随机函数,当给定相同的种子时,会提供相同的伪随机数序列。这也可以用于覆盖系统的随机函数(包括 random() 表达式和行为中的随机性),使用高级随机数生成器的 PRNG。默认情况下,种子始终是随机的,意味着每次运行游戏时随机数生成都不同。

脚本编写

在使用 JavaScript 或 TypeScript 编码时,可以通过 IAdvancedRandomObjectType 脚本接口访问此对象的功能。

渐变

高级随机数生成器还提供了计算自定义渐变的工具。这对于程序生成很有用。它生成的随机数范围在 0 - 1 之间,但渐变允许你为该范围内的某些值或颜色指定值。例如,将范围 0 -0.5 设为蓝色,将范围 0.5- 1 设为绿色,允许你使用 0 - 1 范围内的随机数查找颜色,并获取水域或陆地颜色。与 2D Perlin 噪声等表达式结合使用时,这提供了一种随机生成带有水域和陆地混合区域的方法。

概率表

高级随机数生成器还可以创建概率表,这是生成加权随机数的一种方式。例如,如果你添加了三个权重为 1 的项目,然后添加了一个权重为 2 的第四个项目,那么这个项目被选中的可能性是其他任何项目的两倍。概率表条目的值可以是数字或字符串,但权重必须是数字。这对于像随机拾取这样的任务很有用,其中有很多常见的廉价物品,但也有些稀有的贵重物品。

排列表

高级随机数生成器的另一个功能是创建排列表。这些只是一组随机排序的数字。这对于检索非重复的随机数很有用。例如,你可以使用 0 -51 的数字来表示一副牌,并创建一个排列表来表示洗牌后的牌组。然后,如果你按顺序读取排列表并用排列表达式处理,它将返回一系列随机的牌,就像从洗牌后的牌组中发牌一样。

高级随机属性

种子

用作随机数生成种子的字符字符串。相同的种子将始终提供相同的数字序列。空字符串(默认值)将使用随机种子,确保每次的数字序列都不同。

替换系统随机

如果启用,系统随机函数(包括系统的 random() 表达式以及行为中的随机性)将被覆盖,以使用高级随机数生成器的 PRNG。由于高级随机数生成器可以控制种子,这为整个运行时的随机数生成提供了种子。

高级随机条件

高级随机对象没有任何条件。

高级随机动作

设置倍频程

设置用于相干噪声生成的倍频程数量,从 1 -16。默认值为 1。这只影响 Billow、Classic 和 Ridged 表达式。使用额外的倍频程会在噪声函数上添加越来越多的细节层,但处理速度也更慢。

更新种子

使用字符串设置新的随机数生成种子。
注意,如果你传递一个空字符串,它仍然使用空字符串作为种子。如果你想回到使用随机种子,将 RandomSeed 表达式作为要设置的种子传递。

添加渐变停止点

在当前渐变中添加一个停止点。在创建渐变后使用,以指定渐变。停止点的位置可以是任何数字,但通常保持在 0 - 1 范围内,以便与随机表达式一起使用。停止点的值应该是 rgbEx(r, g, b) 或 rgba(r, g, b, a) 形式的表达式(当渐变使用颜色模式时);否则它可以是一个简单数字。默认渐变是一个简单的黑色到白色渐变,使用位置 0 处的 rgbEx(0, 0, 0) 和位置 1 处的 rgbEx(100, 100, 100)。

创建渐变

创建一个新的渐变。通过给它们不同的名称来管理多个渐变。创建渐变还将它设置为当前渐变,因此此操作可以立即跟随添加渐变停止点以指定渐变。默认情况下,渐变工作在颜色模式,它使用基于 rgbEx 或 rgba 表达式的值;然而,它们也可以设置为数字模式,使用简单数字。

设置渐变

通过其名称设置当前渐变。这允许在多个渐变之间切换。

创建排列表

生成一组随机排序的数字。长度是要生成的数字数量,偏移量是序列中的第一个数字。例如,长度为 3 且偏移量为 1 将生成数字 1、2 和 3,然后随机洗牌。

重新洗牌排列表

重新洗牌现有的排列表。

添加概率条目

向当前概率表添加一个条目。值可以是字符串或数字。权重影响项目被选中的可能性,相对于其他项目的权重。

创建概率表

使用字符串标识创建新的概率表。

移除概率条目

从当前概率表中移除现有条目。如果指定了 0 的权重,则无论其权重如何,都将删除第一个具有给定值的条目。否则,只有当条目同时匹配值和权重时才会删除条目。

设置概率表

从当前概率表中设置加权随机值的来源。

从 JSON 创建概率表

从 JSON 字符串创建新的概率表。输入应该是一个(weight: number, value: number|string)元组的数组。

高级随机表达式

Billow2d(x, y) / Billow3d(x, y, z)

使用 Billow 噪声在 0 - 1 范围内生成随机数,可以使用 2D 或 3D 坐标。

Cellular2d(x, y) / Cellular3d(x, y, z)

使用 Cellular 噪声在 0 - 1 范围内生成随机数,可以使用 2D 或 3D 坐标。

Classic2d(x, y) / Classic3d(x, y, z)

使用经典(Perlin)噪声在 0 - 1 范围内生成随机数,可以使用 2D 或 3D 坐标。

RandomSeed

生成一个随机种子字符串,可用于设置种子,恢复不可预测的数字序列。

Ridged2d(x, y) / Ridged3d(x, y, z)

使用 Ridged 噪声在 0 - 1 范围内生成随机数,可以使用 2D 或 3D 坐标。

Seed

当前设置的种子,作为字符串。

Voronoi2d(x, y) / Voronoi3d(x, y, z)

使用 Voronoi 噪声在 0 - 1 范围内生成随机数,可以使用 2D 或 3D 坐标。

Gradient(Position) / GradientByName(Name, Position)

在给定位置采样渐变。这返回颜色模式渐变的颜色值,否则返回简单数字。Gradient 变体指的是当前渐变,而 GradientByName 变体指的是使用其名称的大小写不敏感字符串的任何渐变。

Permutation

从置换表中获取基于零的索引的值,从 0(第一个项目)到但不包括表的长度。

Weighted / WeightedByName(Name)

从概率表中获取随机值。值的相对可能性受其权重的影响。Weighted 变体指的是当前概率表,而 WeightedByName 变体指的是使用其名称的大小写不敏感字符串的任何概率表。

ProbabilityTableAsJSON

获取当前概率表作为 JSON 字符串。这可以使用从 JSON 操作创建概率表来读取。

正文完
 0
评论(没有评论)