初学者:函数自定义中咋找一组产生随机数的函数中最大值是第几个?

一个是怎么产生随机数的问题:

這里只列出了Random类里的一部分常用方法其实它也有nextBoolean,nextBytes等方法

nextInt返回所有int的可能值,有2的32次方种可能nextLong也同理,返回long的所有可能取值

nextFloat和nextDouble都昰返回0到1之间的一个浮点数,包括0不包括1,也就是返回0和返回0.111的概率是相同的但是永远不返回1.0

API作者非常好,提供了nextInt(int)这个重载方法如果不提供这个,那要想获得1到25的随机int可就麻烦了,要先取一个0到1之间的浮点数这时,0到1相当于1到26则要得的数x与取到的随机数r之间的關系是1 - r = (25 - x) / 25,然后再计算再取整。。。反正很麻烦

有个nextInt(int)这个重载方法,很easy了nextInt(int n)方法的返回值是0到n之间的随机整数,包括0不包括25,因此你想要1到25之间的随机数,包括1和25就可以写成

int randomIntInRealm = r.nextInt(25) + 1;
好,这个问题说完了下面说你的需求,需求里有一个“不能重复”这就使这个问题從生成随机数往格子里填的问题变成了一个洗牌问题(shuffle)。如果你生成一个随机数判断不重复填进去,重复就再生成那越到后来,重複的可能性越大程序效率非常低。

这种不重复的随机数实际上非常像洗牌不重复的25个牌,变换位置这样,你的随机数生成的就不是偠往里填的数而是一个位置。先把1到25顺序填进25个格子里然后从第一个格开始到最后一个格子,25次循环每次生成一个随机数,把当前位置的数与随机数位置的数字对换这样循环下来,25个数就被打乱了

}

我要回帖

更多关于 产生随机数的函数 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信