java随机数 Math.random 和Random类

java实现随机数有两种方式1)Math.random()和Random类方法,我简单记录一下,方便自己回顾,更希望帮助他人。

Math.random()

这个方法是Math类提供的方法,用来返回一个处于0-1之间的浮点数。

用处:

1.返回一个位于0--1随机浮点数,对浮点数进行处理

System.out.println(String.format("%.2f", Math.random())); //0.46 

对小数尾数进行格式化,使其小数点后两位.

2.返回一个位于0--N之间的整数:

int number = (int)(Math.random()*n)

例如 返回一个位于0---18之间的整数:

int number = (int)(Math.random()*18)

3.返回一个位于n--m之间的整数

int number = (int)(n+Math.random()*(m-n));

例如:返回一个位于20--25之间的整数:

int number = (int)(20+Math.random()*5);
		System.out.println(number);

4.返回位于字母’n‘---’m‘之间的任意字符

例如:返回字母'a'--'z' 之间的任意字母;

char ch = (char)('a'+Math.randon()*('z'-'a')+1)

实例小游戏(猜数字)

public class NumberRiddle {
	public static void main(String[] args) {
		Scanner scan = new Scanner(System.in);
		while (true) {
			System.out.println("是否开始游戏,按0表示退出,按任意键继续(输入负数自动退出游戏)");
			int inputNumber = scan.nextInt();
			if (inputNumber != 0) {
				int imageNumner = (int) (Math.random() * 100);
				System.out.println("随机数已产生,位于1-100之间,请开始猜数");
				while (inputNumber != imageNumner) {
					inputNumber = scan.nextInt();
					if (inputNumber < imageNumner) {
						System.out.println("输入数字太小,请重新猜");
					} else if (inputNumber > imageNumner) {
						System.out.println("请入数字太大,请重新猜");
					} else if (inputNumber < 0) {
						return;
					}
				}
				System.out.println("恭喜你,猜对啦!");

			} else {
				System.out.println("谢谢参与");
				return;
			}
		}
	}
}

 

Random类:

实例方式1)Random random1 = new Random();

2)Random random2 = new Random(seedValue);

seedValue;随机数种子,传入一个数字,系统会根据随机数种子来生成随机数(主要是为了方便可再现随机数生成),默认1以系统当前时间作为随机数种子;

常用方法(Random.xx):

  1. nextInt()       返回值类型int       返回一个随机整数;
  2. nextInt(int n)   返回一个等于0小于n的随机整数;
  3. nextLong      返回一个随机长整形值;
  4. nextboolean 返回一个随机布尔类型 
  5. 以此类推;

 

实战小项目(模拟微信红包功能)

import java.util.Random;
import java.util.Scanner;

public class ReaPaper {
	public static void main(String[] args) {
		Scanner scan = new Scanner(System.in);
		System.out.println("请输入你要派发红包的金额");
		double total = scan.nextFloat();
		System.out.println("请输入你要派发红包的份数");
		int portion = scan.nextInt();

		double min = 0.01; // 红包最小金额
		Random random = new Random();
		System.out.println("开始随机产生红包");
		for (int i = 1; i <= portion; i++) {
			// 本次红包可能最大值 max = 可用金额-(红包总数-已经发送红包的数目)*最小红包金额;
			double max = total - (portion - i) * 0.01;
			double bound = max - min; // 本次红包可取值范围

			double money = random.nextInt((int) bound * 100) / 100;
//random.nextInt(round) 可以在该round随机产生一个随机数  由于参数是整数,所以我们简单修改
//			double money = String.format("%.2f", Math.random()args)*bound;
			money += 0.01; // 防止出现0元
			System.out.println("第" + i + "份红包的金额是--->" + money);
			total = total - money;
		}
	}
}

 

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值