gpt4 book ai didi

f# - 如何使用 fscheck 生成数据?

转载 作者:行者123 更新时间:2023-12-02 08:45:22 24 4
gpt4 key购买 nike

是否可以使用 fscheck 生成数据,特别是列表,以便在 fscheck 之外使用?我无法在 fscheck 测试中调试比较结果看起来相等的情况,但 fscheck 说它们不相等。

我有这个对象列表生成器。如何从这个生成器生成一个我可以使用的列表?

let genListObj min max  = Gen.listOf Arb.generate<obj> |> Gen.suchThat (fun l -> (l.Length >= min) && (l.Length <= max))

最佳答案

编辑:此函数现在是 FsCheck API (Gen.sample) 的一部分,因此您不再需要以下内容...

这是一个从给定生成器生成 n 个样本的示例函数:

let sample n gn  = 
let rec sample i seed samples =
if i = 0 then samples
else sample (i-1) (Random.stdSplit seed |> snd) (Gen.eval 1000 seed gn :: samples)
sample n (Random.newSeed()) []

编辑:其中的 1000 魔数(Magic Number)代表生成值的大小。 1000 相当大 - 例如序列的长度在 0 到 1000 个元素之间,例如,字符串也是如此。如果生成需要很长时间,您可能需要调整该值(或将其作为函数的参数)。

关于f# - 如何使用 fscheck 生成数据?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12900470/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com