跳到主要内容

Branch(分支)

每次运行随机选择它的一个输出分支。

用途

让行为多样、自动化不那么齐整——交替路线、随机化跑哪个策略、或在两条路间分流。

你在画布上接的分支就是候选列表。 没有关于可选项的独立配置。

何时用

  • 在多个等价例程间交替,让各次运行不完全相同。
  • 在两个策略间分流以作比较。
  • 随机选起始方向、目标或顺序。

何时不用

  • 按数据决定——用 If
  • 某条路必须总先跑时——Branch 不保证顺序(除了 noRepeat 轮转)。
  • 重试——用 Loop 或重试策略。

前提

每个分支端口都必须接线。 校验强制如此,因为未接的分支会随机把运行带进死胡同。

如何运行

  1. 从已接的分支端口(branch1branchN)构建候选列表。
  2. 用所设 Mode 选一个。
  3. 沿选中分支路由,并记录选择(输出:selectedBranchmodebranchCount)。

设置

设置类型范围备注
Mode选择randomnoRepeatweighted必填
Branch countinteger2–8必填。 每个在画布上加一个端口
Weightsmap每分支 1–100weighted 模式;缺省默认 1

三种模式

模式行为
random均匀。可能连续重复同一分支
noRepeat洗牌的袋子——每个分支用过一遍才会重复
weighted权重高的更常被选

noRepeat 通常才是人们说"随机"时想要的。 均匀随机会心安理得地连抽同一分支三次;不重复的袋子不会。

不重复的袋子在一次运行内跨循环轮次延续,运行之间重置。

端口

端口走它的时机必接
branch1…branchN该分支被选中全部必接
Fatalmode 或分支数无效永不被走

Branch 是产品里接线最严格的节点:每一个分支端口都必须连接。

基础示例

两条路线 50/50 分流:

  • Mode:Random
  • Branch count:2

实际示例——变换扫描顺序

每次运行都先扫同一方向是可识别的模式。轮换它只需一个节点:

Branch 选择;变量记录选择;switch 据此行动。把"选"与"做"分开让图可读,还让后续节点知道走了哪条路线。

高级示例——加权策略

五次里一次跑昂贵的彻底例程,其余跑快速版:

  • Mode:Weighted
  • Branch count:2
  • Weights:branch1 = 4(快)、branch2 = 1(彻底)

最佳实践

  • 接上每个分支。 这是必需,未接的分支会让运行死胡同。
  • 要多样优先 noRepeat 均匀随机会扎堆。
  • 把选择记进变量,让后续节点和运行日志知道发生了什么。
  • 让各分支结果等价。 随机选择应改变怎么做,不改变做没做成
  • 用权重而非嵌套 Branch 表达不均等的几率。

性能笔记

  • 选择是纯计算——几乎免费。
  • 成本全在分支做的事。某分支慢得多,你的平均运行时间就是加权平均,不是快路径。

内存笔记

  • 不重复的袋子是每次运行的小结构;可忽略。
  • 运行之间不持久——袋子每次运行重置。

常见错误

错误后果修复
留一个分支不接校验错误;运行时会死胡同全接上
指望 Random 交替均匀随机会重复noRepeat
拿 Branch 做数据决策行为不确定If
权重加起来不是 100没问题——它们是相对的无需修复
各分支结果不同运行随机成败让分支等价

故障排查

同一分支总被选中。 Mode 是 random。换 noRepeat

节点校验失败。 一个或多个分支端口未接。

某分支似乎从不运行。 weighted 模式下它的权重相对太低。

调低分支数删掉了一条连线。 预期如此——尾部端口被移除、孤儿连线被剪。

FAQ

能有几个分支? 2 到 8。

No-repeat 运行之间重置吗? 是。它只在一次运行内跨循环轮次。

没写权重的分支得多少? 1。

能看到选了哪个分支吗? 能——输出记录 selectedBranch,运行日志里可见。

相关节点

  • If——按数据而非运气决定
  • Variable——记录选择
  • Loop——重复,no-repeat 跨其轮次
  • Wait——随机时长,另一多样性来源

相关页面