4

我正在使用FsCheck's生成自定义数据Gen

假设你有一个函数返回Gen<'T>

let chooseRectangle widthMax heightMax offset =
   gen {
       let! left = Gen.choose(0, widthMax-offset)
       let! top = Gen.choose(0, heightMax-offset)
       let! width = Gen.choose(offset, widthMax-left)
       let! height = Gen.choose(offset, heightMax-top)
       return { Left=left
                Top=top
                Width=width
                Height=height
               }
   }

然后用于生成数据:

Gen.sample 0 10 (chooseRectangle 400 200 10)

size在这种情况下使用的参数(第一个),它是否影响值重新分配?

4

1 回答 1

3

不,据我所知,不是你的情况。

第一个论点是大小。sample将其线程化到您调用它的生成器中,但是该生成器对它的作用取决于特定的实现。例如,对于序列生成器,它可以控制序列的长度。

但是,您的生成器仅构建在 之上Gen.choose,它明确忽略了它:

let choose (l, h) = Gen (fun _ r -> range (l,h) r |> fst) 

其中 size 是_参数。见这里

于 2016-02-03T21:30:25.173 回答