【问题标题】:How to select a value in a range with QuickCheck?如何使用 QuickCheck 在范围内选择一个值?
【发布时间】:2018-09-08 09:18:41
【问题描述】:

我有以下代码用于在以下站点上创建挑战:codewars

describe "Random cases" $ do
    it "It should handle random test cases" $ 
        property $ prop_check where 
            prop_check  (Positive x) = solution x == ref_sol x
            --- ref_sol function

我想将 prop_check 中 x 的值设置为大于 4 的正整数,并且最多为五位数(不超过五位数,即:最大值 = 99999)。

我将如何接近它?

【问题讨论】:

    标签: haskell quickcheck hspec


    【解决方案1】:

    您可以使用 QuickCheck 的 choose 函数选择一个包含范围内的值。最简单的方法可能是用do 表示法编写prop_check

    prop_check :: Gen Bool
    prop_check = do
      x <- choose (5, 99999) :: Gen Integer
      return $ solution x == ref_sol x
    

    这里,x 是一个介于 599999 之间的 Integer 值。

    根据solutionref_sol 的类型,您可能不需要第一行的Gen Integer 类型注释。由于我不知道这些函数的类型,所以我不得不添加注释。

    【讨论】:

    • 啊,谢谢 :) 解释了它
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-09-30
    • 2017-07-24
    • 2021-08-20
    • 2022-11-13
    • 1970-01-01
    • 2016-07-21
    相关资源
    最近更新 更多