科百科
当前位置: 首页 范文大全

java随机数方法的实现过程(使用JavaFaker)

时间:2023-06-17 作者: 小编 阅读量: 3 栏目名: 范文大全

最后找到了Faker这个好东西,幸运的是有Java版本:JavaFaker。不仅使用方便,而且可以设置多个领域,几秒钟内生成需要的随机数。使用Faker可以访问30多个不同的领域,为几乎每个用例创建随机数。此外,Faker库还支持返回本地化随机数据。如果指定了locale请确保在开发库的支持列表中。可以检查对应的.yml文件确认已经有对应的英文版本。

原型开发好以后,通常需要一些展示数据。如果没有实际数据,怎样为 Java 程序生成一些有意义的随机数据?

我用过 UUID 和 ThreadLocalRandom 来生成随机数,但是能力有限,无法提供特定领域的随机数据。于是,我开始寻找更好的解决方案。最后找到了 Faker 这个好东西,幸运的是有 Java 版本:Java Faker。不仅使用方便,而且可以设置多个领域,几秒钟内生成需要的随机数。

1. Java Faker 上手

Maven项目中添加 Java Faker 依赖:

<dependency> <groupId>com.github.javafaker</groupId> <artifactId>javafaker</artifactId> <version>0.18</version></dependency>

使用前,创建一个 Faker 对象:

Faker faker = new Faker();

Faker 方法调用时会随机访问底层数据,因此不需要每次都创建一个实例。Java Faker 通过 /src/main/resources 中的 .yml 获取数据。

使用 Faker 可以访问30多个不同的领域,为几乎每个用例创建随机数。可以使用流式 API 生成随机数:

String firstName = faker.name().firstName();String appName = faker.app().name();String foodIngredient = faker.food().ingredient();

包含的领域有:

  • 金融
  • 视频
  • 书籍
  • 姓名
  • 地址
  • 商务

此外还包含一些有趣的领域:

  • 尤达
  • 查克·诺里斯
  • 哈利·波特
  • 指环王

2. Java Faker 使用示例

为了演示 Java Faker,这里通过一个 REST API 返回随机数量的 person、book 和 food 对象。虽然示例采用了 Spring Boot 2.1 和 Java 11,但是其他版本也可以正常工作。

示例应用提供了不同的 Endpoint 获取随机数据:

@RestController@RequestMapping("/random")public class RandomDataEndpoint { @Autowired private ObjectMapper objectMapper; @GetMapping("/persons") public JsonNode getRandomPersons() { Faker faker = new Faker(); ArrayNode persons = objectMapper.createArrayNode(); for (int i = 0; i < 10; i) { persons.add(objectMapper.createObjectNode() .put("firstName", faker.name().firstName()) .put("lastName", faker.name().lastName()) .put("title", faker.name().title()) .put("suffix", faker.name().suffix()) .put("address", faker.address().streetAddress()) .put("city", faker.address().cityName()) .put("country", faker.address().country())); } return persons; }}

3. 返回本地化随机数据

随机数据的默认 locale 是 EN。此外,Faker 库还支持返回本地化随机数据。如果指定了 locale 请确保在开发库的支持列表中。可以检查对应的 .yml 文件确认已经有对应的英文版本。

如果指定的 locale 没有对应的翻译,比如 beers,默认会切换到英文。

Faker 构造函数参数默认为 locale:

Faker faker = new Faker(new Locale("de"));

上面的代码指定返回的随机数据为德语:

@GetMapping("/foods")public JsonNode getRandomFoods() { Faker faker = new Faker(new Locale("de")); ArrayNode foods = objectMapper.createArrayNode(); for (int i = 0; i < 10; i) { foods.add(objectMapper.createObjectNode() .put("ingredients" , faker.food().ingredient()) .put("spices", faker.food().spice()) .put("measurements", faker.food().measurement())); } return foods;}

也可以设为列出的其他 locale:

@GetMapping("/books")public JsonNode getRandomBook() { Faker faker = new Faker(new Locale("en-US")); ArrayNode books = objectMapper.createArrayNode(); for (int i = 0; i < 10; i) { books.add(objectMapper.createObjectNode() .put("author", faker.book().author()) .put("genre", faker.book().genre()) .put("publisher", faker.book().publisher()) .put("title", faker.book().title())); } return books;}

示例完整源代码可以在 GitHub 上找到。

github.com/rieckpil/blog-tutorials/tree/master/random-data-in-java-using-java-faker

    推荐阅读
  • 值得买的笔记本性价比高推荐(低价也有全能表现)

    京东目前售价2999元,影音用户可以考虑下。海尔X1是一款超值的14英寸笔记本,机身厚度仅19.1mm,总重仅1.7kg,比常规超极本更轻20%,纤薄轻巧携带方便,满足多种随身需求,彰显时尚潮流品味。IntelHD4000新一代的核芯显卡,具备更强大的多媒体性能,强大的图形及显示处理能力,使画质更加流丽炫目。近日,该机在京东商城售价3199元。

  • 科目二半坡停车起步技巧(科目二考试半坡起步定点停车技巧)

    坡上停车后,保持脚刹,踩住离合,拉紧手刹,确保手刹能使车辆停在坡上后,松开脚刹。此法技术含量稍高,用于坡度较大的坡或手刹失效之时。练习要求是能够不用手刹,依靠油离与脚刹配合使车辆悬停。很多老司机或山区司机善用此法,部分动力不足的车辆需要此法。此法是目前最常用的坡起方法。即直接松刹车,迅速踩油门抬离合,完成起步。需要驾驶员有很好的油离配合能力,才能迅速平稳起步。

  • set协议的内容

    set协议的内容如下:1、SET协议是指为了实现更加完善的即时电子支付应运而生的。SET主要是为了解决用户,商家,银行之间通过信用卡的交易而设计的,它具有的保证交易数据的完整性,交易的不可抵赖性等种种优点,因此它成为目前公认的信用卡网上交易的国际标准。

  • 厝什么意思(厝怎么理解)

    我们一起去了解并探讨一下这个问题吧!——《考工记·梓人》;火厝积薪之下。——《汉书·贾谊传》停柩,把棺材停放待葬,或浅埋以待改葬:浮厝。

  • 盘点甜蜜秀恩爱狂撒狗粮(喜讯秀恩爱)

    可见,对鸟类而言,跳舞的蜘蛛几乎是送到面前的外卖。性选择的战术其实十分繁杂,除了靠颜值和才华,有些动物甚至使出奇招,直接“自残”甚至“献身”,可以说是与“生存”背道而驰。许多种类的雄蜘蛛,在交配之后,都会折断自己的须肢,充当“塞子”,堵住雌性的外生殖器;姬蛛科的Tidarrenargo,甚至会在交配之后被雌性吃掉。但无论是自然选择还是性选择,都是为了提高生物在演化上的成功程度。

  • 使命召唤怎么快速赚金币(使命召唤如何快速赚金币)

    3、日常任务/签到奖励:日常任务是比较肝的玩法,需要花大量的时间,签到的话每天都会有虽然获取的数量不多,但在前期还算比较不错。

  • win10 微软商店(Mobile版手机淘宝确认已提交到微软商店)

    下面更多详细答案一起来看看吧!win10微软商店刚刚IT之家报道Win10Mobile版《手机淘宝》Beta版进行更新,修复了大量Bug,应用流畅度和稳定性明显提升。现在有消息称,Win10版《手机淘宝》正式版已经提交到微软Windows商店,目前正处于认证阶段。图片来自智机网微软UAP项目团队研发经理邹欣也在微博上表示,手机淘宝已经进行发布倒计时阶段,预计会赶在双十一之前提供大家下载。下面是Win10手机版淘宝的一些截图:

  • 一个业主买了一个车位停了两辆车(只买了一个车位)

    随即严某将物业诉至法院。严某上诉后,最终,上海市一中院二审驳回严某上诉,维持原判。无奈之下,黄女士将物业和业委会告上法庭,要求两被告停止限制其车辆出入小区等行为。一审法院经审理后认为,黄女士对自己的不动产享有使用权,本案中,黄女士在不损坏公共利益和他人合法权益的前题下,可以停放车辆。判决物业公司不得限制黄女士车辆正常出入,一审后物业公司不服,上诉佛山中院。

  • 手机可以查看的卫星地图(打开手机卫星地图)

    哈喽,我的小伙伴们!这里需要用到一款3D卫星地图。安装完成之后打开,点击底部的更多。然后选择地图为谷歌卫星混合图。接着这里可以搜索自己想去的任何地方。比如我们去看一下悉尼歌剧院,3D俯视的震撼景观尽收眼底。无论是老家的风景还是国外的建筑,想看哪里就看哪里,不出门就可以游遍全球。点击我的头像,就能看到私信二字,极速版头条没有私信功能。切记不是评论哦!

  • 如何清洗电风扇(如何清洗电风扇的污垢)

    清洗电风扇的方法是:1、首先拔掉电源,扭松螺丝,然后将前罩或后罩取下来,注意螺丝要放好,以免后期丢失,难以重装回去。