【问题标题】:Does math.random assume 0 to be an integer?math.random 是否假设 0 是整数?
【发布时间】: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

【问题讨论】:

    标签: android math random


    【解决方案1】:

    理论上,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() 代替吗?

    【讨论】:

    • 虽然它应该给你 0 非常非常少。
    • 我不熟悉 Random.nextInt() - 它是生成随机#的更好方法吗?
    • @rob:我只是补充说 :) @Sapp:是的。它使您可以更好地控制种子等,有用的方法来获取范围内的整数等。
    • @Sapp:查看 Random 类的 API 文档 - 您会找到所需的信息。 (谷歌“Java 6 Random”获取Java版本,或使用Android API搜索Android版本)
    • 好吧,nextint() 只是给出一个更随机生成的#?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2023-03-21
    • 2011-09-26
    • 2015-11-20
    • 1970-01-01
    • 1970-01-01
    • 2015-09-29
    • 2019-02-04
    相关资源
    最近更新 更多