Java 学习之 Math计算及SecureRandom随机数

package javaObject;

import java.math.RoundingMode;
import java.security.SecureRandom;
import java.util.Random;

public class javaMath {
	public static void main(String[] args) {
		
		int number = -90;
		double money = -100.1;
		System.out.println(number);
		System.out.println("绝对值:" + Math.abs(number) + ", " + Math.abs(money));
		
		System.out.printf("取最大值(%d, %d):%d\n", 12, 3, (Math.max(12, 3)));
		System.out.printf("取最小值(%d, %d):%d\n", 12, 3, (Math.min(12, 3)));
		
		System.out.printf("取某数的某次方(%d的%d次方):%f\n", 3, 3, Math.pow(3, 3));
		
		System.out.printf("取某数的平方根(%d):%f\n", 12, Math.sqrt(12));
		
		/*
		 * Random:生成伪随机数
		 */
		System.out.printf("随机数(取值范围[0, 1]):%f\n", Math.random());
		System.out.printf("取某个范围的随机数[%d, %d]:%f\n", 10, 50, RandomRand(10, 50));
		// Random用来创建伪随机数。所谓伪随机数,是指只要给定一个初始的种子,产生的随机数序列是完全一样的。
		// 未指定种子,则使用系统当前时间戳作为种子,因此每次运行时,种子不同,得到的伪随机数序列就不同。
		Random randomNumbe = new Random();
		System.out.println(randomNumbe.nextInt());
		System.out.println(randomNumbe.nextInt(5));
		System.out.println(randomNumbe.nextFloat());
		System.out.println(randomNumbe.nextLong());
		System.out.println(randomNumbe.nextFloat());
		System.out.println(randomNumbe.nextDouble());
		// 指定种子,则会得到完全确定的随机数序列:
		Random randomValue = new Random(10);
		System.out.println(randomValue.nextInt(10));
		
		/*
		 * 真随机数
		 * SecureRandom:生成安全的随机数
		 * 无法指定种子,它使用RNG(random number generator)算法。
		 * 这个种子是通过CPU的热噪声、读写磁盘的字节、网络流量等各种随机事件产生的“熵”。
		 */
		 SecureRandom randomSecure = new SecureRandom();
		 System.out.println(randomSecure.nextInt());
	}

	public static double RandomRand(int min, int max) {
		double value = Math.random();
		double minValue = min;
		double maxValue = max;
		value = value * (maxValue - minValue) + minValue;
		return value;
	}
}

发布了804 篇原创文章 · 获赞 135 · 访问量 142万+

猜你喜欢

转载自blog.csdn.net/potato512/article/details/103231113