System.nanoTime提供相对精确的计时,但是不能用来计算当前日期,因为可能为负数,但是计算一段程序跑了多长时间还是可以的,哪怕是负数,差值是一定的

import java.util.Random;

public class RandomTest {
	public static void main(String[] args) {
		/*不用currentTimeMillis的原因是:当多线程调用时,由于CPU速率很快,
		 * 因此currentTimeMillis很可能相等,使得随机数结果也会相等。
//      long seed1 = System.currentTimeMillis();
//nanoTime()返回最准确的可用系统计时器的当前值,以毫微秒为单位(即纳秒)。此方法只能用于测量已过的时间,与系统或钟表时间的其他任何时间概念无关。*/
		Random r = new Random(System.nanoTime());
		for (int i = 1; i <= 100; ++i)
		{
			System.out.print(r.nextInt(100) + " ");//不要扩大倍数再取整,推荐用自带方法,取100以内随机整数
			if (i % 10 == 0) {
				System.out.println();
			}
		}
		System.out.println();
		for (int i = 1; i <= 100; ++i)
		{
			System.out.print(r.nextBoolean() + " ");
			if (i % 10 == 0) {
				System.out.println();
			}
		}
	}
}
========================================Talk is cheap, show me the code=======================================