java如何生成随机数
java如何生成随机,java生成随机数的两种方式。
java生成随机数有两种方法:
1、使用Math方法,Math.random()随机生成一个double类型[0,1),如果想生成1~100的随机数:
1 | 如: int num = ( int )(Math.random()* 100 ); |
2、使用Random方法生成随机数
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | public static void testRandom() { Random random = new Random(); random.setSeed(10000L); for ( int i = 0 ; i < 10 ; i ++) { System.out.println(random.nextInt( 1000 )); } System.out.println( "------------------" ); random = new Random(); random.setSeed(10000L); for ( int i = 0 ; i < 10 ; i ++) { System.out.println(random.nextInt( 1000 )); } } |
结果如下:
208572116475500574641166727670------------------208572116475500574641166727670
3、使用SecureRandom生成随机数,代码如下:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | public static void testSecureRandom() { SecureRandom secureRandom = SecureRandom.getInstance( "SHA1PRNG" ); secureRandom.setSeed(10000L); for ( int i = 0 ; i < 10 ; i ++) { System.out.println(secureRandom.nextInt( 1000 )); } System.out.println( "-------------------" ); secureRandom = new SecureRandom(); secureRandom.setSeed(10000L); for ( int i = 0 ; i < 10 ; i ++) { System.out.println(secureRandom.nextInt( 1000 )); } } |
结果如下:
85162436762625156930530346260-------------------395653534532751943422753814
4、如何选择使用随机数?
首先我们知道java.util.Random的实例不是加密安全的,SecureRandom来获取加密安全的伪随机数生成器,以供对安全敏感的应用程序使用。以上二三可以很明显的发现,我要是知道setSeed值(即时间戳),很明显能把随机数给猜出来。所以不建议使用Random。
5、一些公司随机数选择的案例
可能某些小公司是让使用Random的,使用Random也可以获取到随机数,但是为了程序的安全性,还是使用SecureRandom比较好。
现在有好多公司,明文禁止使用java.util.Random。
标签:
java如何生成随机数