发表于: 2017-08-13 23:58:57

3 1057


今天花的时间不多,只完成了随机生成学生数据的一部分,明天继续,完成后学习Mybatis。


一、要生成的学生数据

students表设计如下:

其中前三项是数据库自动生成的,后面的10项需要程序生成。

  >>基于实际要求,插入的Student数据中,major和jnshuId不能同时相同。但由于随机数的不确定性,在程序中限制两个Student的major和jnshuId不同时相同复杂而低效。因此,选择在数据库中将major和jnshuId设为联合唯一性索引,然后在插入数据时忽略重复值。

因此,设计RandomStudent类如下:

通过getStudent方法生成学生数据,其中的各种getXxx方法都是随机生成各种数据的静态方法。


二、Java中的随机

Java中常见的有三种随机方式:

  1. 1.java.lang.Math.random():返回一个0≤x<1.0的double值。在一次JVM的运行中,只创建一个伪随机数生成器,之后对该方法的所有调用,都是通过该生成器来生成随机数。此方法是同步的,可以在多线程中正确运行,但如果有大量线程需要高速生成随机数,对该生成器的争用会降低效率。
  2. 2.java.util.Random类:实现更多功能的随机数生成。每创建一个对象就会创建一个伪随机数生成器,只要seed不同,生成的随机数序列就会不同;seed相同时,生成的随机数序列完全相同。该类有两种构造方法:
    • ---Random():用某个seed创建一个随机数生成器。在一次JVM的运行中,创建每个随机数生成器的seed都不同。也就是说,用此方法创建的多个random对象,生成的随机数序列一定不同(除非用setSeed方法改变seed)。在多线程中,可以每个线程中创建一个random对象,这样就避免了对随机数生成器的争用。
    • ---Random(long seed):用给定seed创建随机数生成器。可通过相同seed创建random对象,生成相同的随机数序列。
  3. 3.java.security.SecureRandom类:提供强加密随机数生成器。

这里不需要用到多线程,也不需要多样化的随机数生成方法,选择Math.random()即可。


三、程序编写

(明早把代码全部写完再写这块)


返回列表 返回列表
评论

    分享到