java - 在Java中递归生成随机对象

标签 java random dynamically-generated solver

我可以使用什么库/方法为 Java/Scala 中的给定类深度生成随机对象? 我所说的深度生成是指用随机值递归地填充整个对象图,包括原始类型和复杂类型。

目标是使用随机生成的模拟对象进行测试。

为了使测试一致且可重现,生成的对象集在每次运行时都应该相同。

最佳答案

据我所知,有两种强大的方法可以随机生成非常大的任意类型的对象。第一种称为递归方法(由 Wilf 和 Nijenhuis 引入,formalized 由 Flajolet、van Cutsem 和 Zimmerman 引入),第二种称为 Boltzmann sampling 作者:Duchon、Flajolet、Louchard 和 Schaeffer。

在这两种方法中,您都给出一个结构定义(“语法”),然后返回一个符合语法的大型随机对象。

两者都非常成功地用于程序的大规模测试(类似于 Haskell 的 QuickCheck )。不幸的是,虽然有一些不同的方法实现,但我认为没有现成的 Java 库。例如可以做什么,你可能想检查 Yann Ponty's page这些生物信息学方法的 Java 实现。如果您使用的是 OCaml,那么 Alexis Darrasse 和 Benjamin Canou 已经实现了 a useful subset of Boltzmann sampling作为一个完全自主的代数类型(sumtypes)库。

关于java - 在Java中递归生成随机对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12017545/

相关文章:

java - 无法在JButton中编写ActionListener

java - 使用 Google Java API 设置单元格背景颜色和文本大小

javascript - 如何附加事件监听器来动态生成单选按钮?

java - 使用 Java/Scala 创建文档的格式化 PNG 'pages'

java - 我们可以动态创建 testng.xml 文件吗?

C程序从用户获取文件名和数字范围生成指定范围内的数字并打印到文件

c++ - 每次调用函数时随机数都是相同的

c - 加权随机整数

android - android中动态更新数据值

jquery - .index() 似乎不适用于动态创建的可折叠 ListView