【发布时间】:2011-05-13 16:03:21
【问题描述】:
那么,int random = (int) Math.ceil(Math.random() * 5); 返回的值是 0,1,2,3,4 而不是 1,2,3,4,5?
我尝试过测试,但它似乎从未达到 0 或 5 =x
【问题讨论】:
那么,int random = (int) Math.ceil(Math.random() * 5); 返回的值是 0,1,2,3,4 而不是 1,2,3,4,5?
我尝试过测试,但它似乎从未达到 0 或 5 =x
【问题讨论】:
理论上,Math.random() 将始终返回一个大于或等于 0 且严格小于 1 的值。
所以使用 (int) Math.ceil(Math.random() * 5) 实际上应该给你 0, 1, 2, 3, 4, 5。但是,从Math.random() 返回的任何值除了 完全 0 将给出一个值致电Math.ceil() 后有 1 个或更多 - 所以你会经常看到 0 消失。 (如果你曾经看到过它,你会很幸运,但它绝对可能。)看到 5 很容易 - 任何时候Math.random() 返回一个值,你都会得到它大于 0.8。
您有什么理由不使用Random.nextInt() 代替吗?
【讨论】:
Random 类的 API 文档 - 您会找到所需的信息。 (谷歌“Java 6 Random”获取Java版本,或使用Android API搜索Android版本)