在本次的软件构造实验三中需要我们实现很多的随机,比如排班app中排班的随机,进程调度的随机等等,这些都是需要我们理解java中的随机概念并学会如何实现,此篇文章我将介绍如何在java中实现随机。

首先我们需要知道Math.random()这个java自带的数学函数,它的作用是生成double类型的介于集合[0.0,1.0)的随机数,具体用法是double random=Math.random()

在理解了Math.random()的用处和用法后,我们就可以以此为基础来构造任意我们希望的指定范围内的随机数,由于double类数的精度很高,可以在一定程度下看做随机数,借助(int)来进行类型转换就可以得到我们想要的整数随机数了,代码如下:

int random = (int) (Math.random()*(max-min)+min);

比如我们想要获得整数区间[min,max]中的随机整数,那么如上的代码就可以帮助我们轻松地实现我们的目的。

那么对于例如排班app中要求我们实现的随机生成排班表功能,我们需要随机访问排班表employeelist中的元素,而查看employeelist的生成代码List<Employee> employeelist=new ArrayList<>(),我们发现employeelist是一个包含Employee类型的元素的List,而Employee也不是我们所用过的基本数据类型,而是我们自定义的一个类,那么如何实现这样的随机访问就成为了实现这一功能最大的难点,在有了对上述随机数的了解后,我们可以制定出如下的策略:

1、首先得到employeelist中元素的个数,即employeelist.size()

2、将employeelist中元素的个数作为我们生成随机数的最大值,0最为最小值,仿照上述的公式,我们可以编写如下代码int index=(int)(0+Math.random()*size),这样就实现了构造在0和size之间的随机数。

3、利用List中的get()方法,我们可以访问List中的元素。那么对于随机访问employeelist中元素的实现方法就显而易见了,我们编写这样的代码Employee p=employeelist.get(index),这样通过索引的随机化我们就实现了对访问的随机。这样的方法看上去简单却是十分地巧妙。

完整的实现代码如下:

int size=employeelist.size();
 int index=(int)(0+Math.random()*size);
 Employee p=employeelist.get(index);

以上是我通过本课程实验所获得的关于随机的认识,如果有新的认识和想法还会在日后进行增加,若有描述不对的地方欢迎在评论区进行指正。