Java编程那些事儿79——Random随机处理 - 编程入门网
的随机数区间加1即可。
同理,生成任意非从0开始的小数区间[d1,d2)范围的随机数字(其中d1不等于0),则只需要首先生成[0,d2-d1)区间的随机数字,然后将生成的随机数字区间加上d1即可。 d、生成任意整数
直接使用nextInt方法即可。 e、生成[0,10)区间的整数
以上两行代码均可生成[0,10)区间的整数。 第一种实现使用Random类中的nextInt(int n)方法直接实现。 第二种实现中,首先调用nextInt()方法生成一个任意的int数字,该数字和10取余以后生成的数字区间为(-10,10),因为按照数学上的规定余数的绝对值小于除数,然后再对该区间求绝对值,则得到的区间就是[0,10)了。 同理,生成任意[0,n)区间的随机整数,都可以使用如下代码:
Java编程那些事儿79——Random随机处理(3)时间:2010-03-15 csdn 陈跃峰f、生成[0,10]区间的整数
相对于整数区间,[0,10]区间和[0,11)区间等价,所以即生成[0,11)区间的整数。 g、生成[-3,15)区间的整数
生成非从0开始区间的随机整数,可以参看上面非从0开始的小数区间实现原理的说明。 h、几率实现 按照一定的几率实现程序逻辑也是随机处理可以解决的一个问题。下面以一个简单的示例演示如何使用随机数字实现几率的逻辑。 在前面的方法介绍中,nextInt(int n)方法中生成的数字是均匀的,也就是说该区间内部的每个数字生成的几率是相同的。那么如果生成一个[0,100)区间的随机整数,则每个数字生成的几率应该是相同的,而且由于该区间中总计有100个整数,所以每个数字的几率都是1%。按照这个理论,可以实现程序中的几率问题。 示例:随机生成一个整数,该整数以55%的几率生成1,以40%的几率生成2,以5%的几率生成3。实现的代码如下:
因为每个数字的几率都是1%,则任意55个数字的区间的几率就是55%,为了代码方便书写,这里使用[0,55)区间的所有整数,后续的原理一样。 当然,这里的代码可以简化,因为几率都是5%的倍数,所以只要以5%为基础来控制几率即可,下面是简化的代码实现:
在程序内部,几率的逻辑就可以按照上面的说明进行实现。 Java编程那些事儿79——Random随机处理(4)时间:2010-03-15 csdn 陈跃峰4、其它问题 a、相同种子数Random对象问题 前面介绍过,相同种子数的Random对象,相同次数生成的随机数字是完全相同的,下面是测试的代码:
在该代码中,对象r1和r2使用的种子数都是10,则这两个对象相同次数生成的随机数是完全相同的。 如果想避免出现随机数字相同的情况,则需要注意,无论项目中需要生成多少个随机数字,都只使用一个Random对象即可。 b、关于Math类中的random方法 其实在Math类中也有一个random方法,该random方法的工作是生成一个[0,1.0)区间的随机小数。 通过阅读Math类的源代码可以发现,Math类中的random方法就是直接调用Random类中的nextDouble方法 |
凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢! |