返回介绍

12.16.1 随机生成式权重

发布于 2020-09-09 22:55:51 字数 574 浏览 966 评论 0 收藏 0

一个生成式列表被产生的概率可以通过为生成式列表赋值一个权重来改变。一个特定的生成式列表被产生的概率与它的权重成比例。

production ::= [function_data_type] production_name[(tf_port_list)]:rs_rule{|rs_rule};

rs_rule ::= rs_production_list[:=expression[rs_code_block]]

:=操作符将表达式指定的权重赋值到它的生成式列表。权重表达式必须计算成integral非负的值。权重只有当它被赋值到可供选择的生成式的时候才有意义,也就是使用一个|分割的生成式列表。当包含权重表达式的生成式被选择的时候权重表达式会被计算,因此使得权重能够动态地改变。例如,前面例子中的第一个生成式可以按如下方式重写:

first : add := 3
      | dec := 2
      ;

在这里根据两个加权生成式列表add和dec定义了生成式first。生成式add会以60%的概率产生,生成式dec会以40%的概率产生。如果没有指定权重,一个生成式会将1作为它的权重。如果仅仅指定了某些权重,那么未指定的权重应该使用1作为权重。

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文