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

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

    推荐阅读
  • 南京水费多少钱一吨(江苏南京水费收费标准)

    居民一户一表用户,按照满足不同用水需求,将居民用水量及价格分为三档:,我来为大家科普一下关于南京水费多少钱一吨?以下内容希望对你有帮助!特种用水价格:特种用水价格为4.80元/m3。

  • 空调外机漏水影响了楼下怎么办(空调外机往楼下滴水如何解决)

    可以采用了加装一截水管,将滴水引至自家阳台,通过阳台下水道流出,基本没有滴答声,不影响日常生活。此外,还可将空调排水管与楼房的排水管捆扎安装在一起,这样水就会顺着管道流下,不会影响他人。宁可采深山之茶,莫去饮花街之酒,吃菜根淡中有味,守王法梦里无惊。谢却无情之友,须就近有道之士。

  • 唯美静物摄影技巧(静物摄影小技巧)

    唯美静物摄影技巧慢下来,深呼吸,然后从容地进行拍摄一张优秀的静物作品至少需要具备三大要素:光线、构图和主体。至于在构图方面,只需在前景中放入像岩石或者枯木这样的元素就能够让整个场景在视觉上给人一种宏大的效果,但静物摄影的构图却全然是另一回事。当被要求以近距离拍摄相比山脉小得多的物体时,你会发现在静物摄影中要想得到一张构图完美的照片是有多么困难。

  • 周老四对周莹说的那段话(关于周莹的身世至死都未能告诉她)

    所以,吴聘死当天接触过的“杜明礼的酒”、“胡咏梅的糕”以及“宝来的茶”都是重点怀疑对象。这时候的周莹恍然明白,原来毒死吴聘的真正凶手是胡咏梅。在下集预告中,周莹约谈胡咏梅,表示自己已经知道她是杀死吴聘的凶手。而胡咏梅自己则选择撞死在吴聘的墓前。周莹的爹为保护女儿被刺身亡,和观众saybyebye。周莹出门做生意,他怕有危险摆手拒绝,誓死不愿跟周莹前往。虽然周莹和周老四父女情深,但周老四却不是周莹的亲生父亲。

  • 重阳节习俗诗句(重阳节习俗诗句是什么)

    莫道不销魂,帘卷西风,人比黄花瘦____李清照《醉花阴·薄雾浓云愁永昼》,我来为大家科普一下关于重阳节习俗诗句?____李清照《醉花阴·薄雾浓云愁永昼》尘世难逢开口笑,菊花须插满头归。____杜牧《九日齐山登高》东篱把酒黄昏后,有暗香盈袖。____郑谷《菊》满园花菊郁金黄,中有孤丛色似霜。____白居易《重阳席上赋白菊》他乡共酌金花酒,万里同悲鸿雁天。____卢照邻《九月九日玄武山旅眺》可恨相逢能几日,不知重会是何年。

  • 包好的水饺怎么储存(包好的水饺储存的方法)

    下面内容希望能帮助到你,我们来一起看看吧!包好的水饺怎么储存包好的饺子放在冰箱抽屉里排好,冷冻。冰一会,确定饺子硬了就好,不要冻成冰坨。冰了一会,饺子硬了,把排好的饺子打散,用保鲜袋装起来封口,然后放到冷藏中保存就OK了。因为硬了后分开所以不会黏在一起,因为没了水汽所以很难冻成一坨。

  • 枇杷糖水的配方(入夏必备枇杷糖水)

    枇杷糖水的配方?每年进入5月下旬,枇杷就大量上市了,都说“5月枇杷赛黄金”,枇杷的营养价值很高,含有丰富的维生素、胡萝卜素、钙、镁、钾等微量元素,尤其是经常会上火、喉咙不舒服的人每天吃几个枇杷,能清火化痰、润肺止咳,滋润嗓子,枇杷好吃,但上市时间短,新鲜的枇杷尝鲜期不过短短一个月,这一个月前后的枇杷味道和口感都是最好的,喜欢吃枇杷的朋友不要错过;,今天小编就来说说关于枇杷糖水的配方?

  • 邑八景之一也中的之什么意思(邑八景之一也的之是什么意思)

    无何,见宫殿数十所,碧瓦飞甍,始悟为山市。又其上,则黯然缥缈,不可计其层次矣。又闻有早行者,见山上人烟市肆,与世无别,故又名“鬼市”云。没过多久,出现了几十座高大的宫殿,碧绿的瓦,翘起的屋檐,这才明白是“山市”。(我)又听说,有早起赶路的人,看到山上有人家、集市和店铺,与尘世没有太大的区别,所以又叫“鬼市”。

  • 这样吃海参最补身体(吃海参如何补身体)

    营养专家表示,人体每天对于营养的吸收是有一定限度的,如果不加节制地吃海参,食用过多反而可能会造成人体负担过重,尤其是对于一些身体虚弱的人来说,营养负担过重也有可能造成身体不适。这样的吃法既能保证人体对营养的吸收,又能够最大化保存海参的营养。但是在吃完海参后,不要立刻吃酸性的东西,否则会破坏海参的营养,妨碍人体吸收。