Generating constrained random data with uniform distribution
暂无分享,去创建一个
We present a technique for automatically deriving test data generators from a given executable predicate representing the set of values we are interested in generating. The distribution of these generators is uniform over values of a given size. To make the generation efficient, we rely on laziness of the predicate, allowing us to prune the space of values quickly. In contrast, implementing test data generators by hand is labour intensive and error prone. Moreover, handwritten generators often have an unpredictable distribution of values, risking that some values are arbitrarily underrepresented. We also present a variation of the technique that has better performance, but where the distribution is skewed in a limited, albeit predictable way. Experimental evaluation of the techniques shows that the automatically derived generators are much easier to define than handwritten ones, and their performance, while lower, is adequate for some realistic applications.
[1] Philippe Flajolet,et al. A Calculus for the Random Generation of Labelled Combinatorial Structures , 1994, Theor. Comput. Sci..
[2] Pierre Lescanne,et al. Counting and generating lambda terms , 2012, Journal of Functional Programming.
[3] Donald E. Knuth,et al. The Art of Computer Programming, Volume 4, Fascicle 2: Generating All Tuples and Permutations (Art of Computer Programming) , 2005 .
[4] Sebastian Fischer,et al. Purely functional lazy nondeterministic programming , 2011, J. Funct. Program..