Java:乱数生成RandomとThreadLocalRandom

1206 ワード

RandomもThreadLocalRandomも乱数を生成することができ、以下の2つの例で0-99内のデータ数を生成することができる
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));
	}
}