Java:乱数生成RandomとThreadLocalRandom
1206 ワード
RandomもThreadLocalRandomも乱数を生成することができ、以下の2つの例で0-99内のデータ数を生成することができる
Random
Randomのコンストラクション関数は乱数ジェネレータを生成します.コンストラクション関数を呼び出すたびに生成される乱数シードは異なります.
nextIntメソッド:次の均一分布の擬似ランダム整数を返し、合計2の32乗の整数値を返します.
注意:Java 7以降、Randomを引き続き使用するべきではありません.
ThreadLocalRandom
使用例
Random
Randomのコンストラクション関数は乱数ジェネレータを生成します.コンストラクション関数を呼び出すたびに生成される乱数シードは異なります.
nextIntメソッド:次の均一分布の擬似ランダム整数を返し、合計2の32乗の整数値を返します.
注意:Java 7以降、Randomを引き続き使用するべきではありません.
ThreadLocalRandom
ThreadLocalRandom ,
ThreadLocalRandom.current()は、現在のスレッドのThreadLocalRandomオブジェクトを返します.ThreadLocalRandomの利点は,高同時条件下で異なるスレッドで発生する乱数エネルギーが一致しないことである.同様にnextIntメソッドを呼び出すと、擬似ランダム整数値も返されます.使用例
package com.vip.zhibin02.demo.util;
import java.util.Random;
import java.util.concurrent.ThreadLocalRandom;
import org.junit.Test;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
public class RandomTest {
private static final Logger logger = LoggerFactory.getLogger(RandomTest.class);
private static final Random rnd = new Random();
@Test
public void randomTest() {
// Java7 , Random
logger.info("random number: {}", Math.abs(rnd.nextInt() % 100));
}
@Test
public void threadLocalRandomTest() {
//threadLocalRandom ,
logger.info("thread local random number: {}", Math.abs(ThreadLocalRandom.current().nextInt() % 100));
}
}