You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何修改ScalaCheck生成器中的数值步进增量

ScalaCheck自定义0.5步长数值生成方案

你可以通过以下两种方式实现需求:

  • 方案1:整数范围映射(兼容性最高,推荐)
    将目标数值范围按步长放大为整数区间,生成整数后再映射回原范围,完全复用内置生成器的边界覆盖逻辑:
val step = 0.5
// 先把边界按步长缩放为整数
val scaledMin = (min / step).toInt
val scaledMax = (max / step).toInt
// 生成整数后映射回0.5步进的Double值
val halfStepGen: Gen[Double] = Gen.chooseNum(scaledMin, scaledMax).map(_ * step)

该方案适配所有ScalaCheck版本,生成结果会自动包含min、max边界值,不会出现范围溢出问题。

  • 方案2:直接调用带步进参数的chooseNum重载
    ScalaCheck 1.14.0及以上版本的chooseNum支持传入自定义步长作为额外参数,写法更简洁:
val halfStepGen: Gen[Double] = Gen.chooseNum(min, max, 0.5)

如果需要多组自定义步进,也可以传入多个步长值,比如Gen.chooseNum(min, max, 0.5, 1.5),生成器会优先采样你指定的步长对应的值。

你可以通过以下代码快速验证生成结果是否符合要求:

// 输出20个样本验证步长和范围
halfStepGen.sampleList(20).foreach(println)

内容的提问来源于stack exchange,提问作者regularjohn

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.05 05:48:02