差異處
這裏顯示兩個版本的差異處。
java:code_quality:findbug:dm_nextint_via_nextdouble [2013/02/24 23:01] 127.0.0.1 外部編輯 |
java:code_quality:findbug:dm_nextint_via_nextdouble [2023/06/25 09:48] |
||
---|---|---|---|
行 1: | 行 1: | ||
- | {{tag>java findbugs}} | ||
- | ====== DM_NEXTINT_VIA_NEXTDOUBLE ====== | ||
- | ===== Description ===== | ||
- | Dm: Method uses the nextDouble method of Random to generate a random integer; using nextInt is more efficient\\ | ||
- | 使用nextDouble去產生一個random integer,造成效能降低。 | ||
- | ===== Solution ===== | ||
- | If r is a java.util.Random, you can generate a random number from 0 to n-1 using r.nextInt(n), rather than using (int)(r.nextDouble() * n). \\ | ||
- | 用nextInt(n)取代(int)(r.nextDouble() * n)即可。 | ||
- | ===== Example ===== | ||
- | Before:\\ | ||
- | <code java> | ||
- | private static void delay(){ | ||
- | int d = (int)(Math.random()*1000); | ||
- | try { | ||
- | Thread.sleep(d); | ||
- | } catch (InterruptedException e) { | ||
- | // log.. | ||
- | } | ||
- | } | ||
- | </code> | ||
- | After:\\ | ||
- | <code java> | ||
- | private static void delay(){ | ||
- | int d = r.nextInt(1000); | ||
- | try { | ||
- | Thread.sleep(d); | ||
- | } catch (InterruptedException e) { | ||
- | // log.. | ||
- | } | ||
- | } | ||
- | </code> | ||
- | |||
- | PS. Math.random()內也是會去產生Random物件去取得亂數值。 |