【问题标题】:Selecting a random color in java在java中选择随机颜色
【发布时间】:2012-08-24 18:31:37
【问题描述】:

我有一个 iPhone 版本的应用程序,它使用一些代码来设置颜色。

((rand() % 176) * 80) / 256.0f

我是objective c 的新手,所以我不知道它是如何工作的。我想在Java 中为 Android 制作这个的精确副本。

在 Java 中,我们通常使用 Random() 。我想如何使用Random r = Random();实现上述功能@

【问题讨论】:

  • 这真的很简单。你不明白哪一部分?你贴的那行代码是纯C,里面没有Objective-C。

标签: java iphone objective-c xcode porting


【解决方案1】:

在 Android 中,我首先会初始化一个变量 rand = new Random()。然后我会把你的表达写成:

rand.nextInt(176) / 3.2f

(请注意80 / 256.0 == 1 / 3.2。)我只会为rand 赋值一次,并在每次需要新颜色时重复使用相同的Random 对象。

经过一些粗略的工作,您的原始代码似乎只是一种计算均匀分布在 0 和 55.0f 之间的随机浮点值的奇特方法。因此,做同样事情的一个更简单的方法是:

rand.nextFloat(55)

唯一的缺点是它与原始代码不太相似(尽管行为相同)。

【讨论】:

    【解决方案2】:

    Java 中的等价单行代码是:

    ((new Random().nextInt() % 176) * 80) / 256.0f;
    

    更多关于JavaDoc上的随机类

    显然,您不应该每次都创建 Random 的新实例。

    Random r = new Random();
    // call r.nextInt() each time you need a new random integer
    double color = ((r.nextInt() % 176) * 80) / 256.0f;
    

    【讨论】:

    • 没有理由在每次需要新的随机值时都构造一个新的Random 对象。
    • 单行,但如果必须生成多个随机数则效率不高,否则没问题。
    • @TedHopp 我编辑了答案,在我写它的时候似乎很明显,也许不适合初学者。
    • @HarmeetSingh 哦,谢谢你,我不知道...... MOTO。我说的是 OP,而不是我。
    猜你喜欢
    • 2014-10-07
    • 2014-06-12
    • 2019-03-29
    • 2014-12-26
    • 2011-07-07
    • 2017-03-29
    • 2015-08-16
    • 2019-10-29
    • 1970-01-01
    相关资源
    最近更新 更多