public static void main(String[] args) {
int[] arr = { 1, 4, 8, 11, 15, 18 };
int i = (int) (Math.random() * 10 % arr.length);
System.out.println(arr[i]);
}这是前几天在这里看到的一个答案。运行结果是正确的有一点算不明白,int i = (int) (Math.random() * 10 % arr.length); 这句里,i最大值为什么是5?1 < Math.random() * 10 < 10,和arr.length取余,怎么也到不了5吧?
int[] arr = { 1, 4, 8, 11, 15, 18 };
int i = (int) (Math.random() * 10 % arr.length);
System.out.println(arr[i]);
}这是前几天在这里看到的一个答案。运行结果是正确的有一点算不明白,int i = (int) (Math.random() * 10 % arr.length); 这句里,i最大值为什么是5?1 < Math.random() * 10 < 10,和arr.length取余,怎么也到不了5吧?
解决方案 »
- 向sql数据库中插入时间出错,请大家帮忙!
- 请教一段java代码的问题
- scjp 文件问题,我的程序为什么编译不了??
- 谁有net.genady.rmi_2.0.2.1.zip 或者能用的RMI plugin
- 怎样在weblogic或者tomcat启动时,自动启动一个线程?
- 各位兄弟,我现在正在做一个数据库操作的类,能不能返回一个结果集?
- a tool class to convert bmp to wbmp used in wap
- 请大虾帮忙
- 出现ORA-01401和ORA-01008错误?
- can not find the main class问题.
- java 写入文件??
- 我的插入排序为什么不成功高手来看看
int[] arr = { 1, 4, 8, 11, 15, 18 };
double temp = Math.random() * 10;
int i = (int) (temp % arr.length);
System.out.println(arr[i] + " : " + temp + " : " + i);
在这种情况下就可以看到结果是可能的。
这是一种测试的结果:
18 : 5.180824322118425 : 5
当temp在5-6之间的时候,,它与arr.length的余数就是5.
明白没?
1 < Math.random() * 10 < 10
只要在5~6之间的数被6取余就得最大5了