为什么这里的 i 并不是取整?

enlich 2016-10-20 07:46:59
有时零点几i=1;有时候一点几i=0
public class TEst {
public static void main(String[] args){
List list2 = new ArrayList<>();

list2.add("a");
list2.add("b");
list2.add("c");
int i = (int)(Math.random() * (list2.size()-1));
System.out.println(Math.random() * (list2.size()-1));
System.out.println(i);
System.out.println(list2.get(i));
list2.remove(2);
for(int i1 = 0;i1<list2.size();i1++){
System.out.println(list2.get(i1));
}
}
}
...全文
243 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
enlich 2016-10-24
  • 打赏
  • 举报
回复
引用 2 楼 Q80470101 的回复:
应该这么写: double random = Math.random() * list2.size(); // 把 这个随机数取值 抽取出来。 int i = (int) random; System.out.println(random); System.out.println(i); 你的那种写法,取了两次随机数,当然不会是一样的结果。 另外 不用 size-1,否则取不到最后一个值。
我知道了 原来是取了两次RANDOM
nikyotensai 2016-10-21
  • 打赏
  • 举报
回复
引用 2 楼 Q80470101 的回复:
应该这么写: double random = Math.random() * list2.size(); // 把 这个随机数取值 抽取出来。 int i = (int) random; System.out.println(random); System.out.println(i); 你的那种写法,取了两次随机数,当然不会是一样的结果。 另外 不用 size-1,否则取不到最后一个值。
游一游走一走 2016-10-21
  • 打赏
  • 举报
回复
这个有问题,会打印两次

    System.out.println(Math.random() * (list2.size()-1));
    System.out.println(i);
可以用简介方式

    int i = new Random().nextInt(list2.size());
家里敷泥呀 2016-10-21
  • 打赏
  • 举报
回复
应该这么写: double random = Math.random() * list2.size(); // 把 这个随机数取值 抽取出来。 int i = (int) random; System.out.println(random); System.out.println(i); 你的那种写法,取了两次随机数,当然不会是一样的结果。 另外 不用 size-1,否则取不到最后一个值。
  • 打赏
  • 举报
回复
获取随机数
Math.random();
一个睿智的人 2016-10-20
  • 打赏
  • 举报
回复
你看看的你第九行代码

62,625

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧