从同一范围生成两个随机数的最快方法

Rig*_*ham 1 java random performance

我一直在用 Java 制作一个小游戏,并使用 Java Random 类来生成随机数。

在比赛过程中,两支球队互相比赛,为了找出谁赢得了比赛,我生成两个随机数(从 1 到 10,如 d10),然后对这些分数进行一些修改,比较它们以找到看看谁赢了。

但我想知道是否有更有效的方法来做到这一点。我不太清楚 Java Random 类是如何工作的,但我的想法是生成一个随机数(从 1 到 100),然后整数除以 10 得到其中一个数字,然后对 10 取模找到另一个号码。

在代码中,我的问题是哪个更快:

Random r = new Random();
int team1Score;
int team2Score;
int randNum;

// current version
team1Score = r.nextInt(10) + 1;
team2Score = r.nextInt(10) + 1;

// new version
randNum = r.nextInt(100) + 1;
team1Score = randNum / 10;
team2Score = randNum % 10;
Run Code Online (Sandbox Code Playgroud)

如果有人有任何想法,有没有什么方法可以使其比这两种方法更有效?

小智 7

这是过早优化的一个例子。这两个示例之间的差异非常小,您真的不必担心。为了可读性,我会选择第一个。

  • @riggsmarkham在这种情况下,您可能需要考虑提出另一个关于优化*那个*的问题 - 可能有一种聪明的方法来重用值或批量计算。 (2认同)