这种方法比Math.random()更快吗?

Wel*_*orn 4 java random math optimization android

我是初学者,目前已开始使用粒子群优化算法开发Android游戏.我现在正在尝试优化我的代码,我在for循环中有很多Math.random(),它几乎一直在运行.所以我想到了一种绕过并跳过所有Math.random()调用的方法.

通过使用这样的方法:

    float random[] = new float[100];
static int randomIndex=0;

private float myRandom(){
    if(randomIndex >= 99)
        randomIndex = 0;
    else
        randomIndex = randomIndex+1;
    return random[randomIndex];
}
Run Code Online (Sandbox Code Playgroud)

...也这样做一个时间的活动开始时:

for (int i=0; i< 100; i++)
        random[i]=(float) Math.random();
Run Code Online (Sandbox Code Playgroud)

我的问题是,这会比使用Math.random()更好(更快)吗?有没有人有更好的建议怎么办?

我也想知道是否有人知道任何好的网站,我可以阅读更多关于如何编写高效的java/android代码.我害怕我有点不好意思.

Gun*_*man 6

学会信任Java API:它功能强大且速度快."过早优化是万恶之源." 在你开始担心这样的事情之前让你的程序工作.

然而,为了您的目的,它可以让您放心地比较您的方法与Java在3000万循环中的比较,然后比较时间.

更不用说填充100个随机数的数组然后使用它一百万次并不是随机的.

  • @om-nom-nom 为什么不将随机创建移动到另一个线程,您可以使用阻塞队列来构建生产者/消费者关系卸载甚至预加载随机数。 (2认同)