前言
在之前我讲过了一个概率执行
的工具类,但此工具类只能用于计算某件事有多少概率会执行。由于我们有时会有这样一种需求:某个事件在一个特定集合中概率执行的可能性。很显然,之前的概率执行方法并不能直接处理这种场景,如果硬要处理的话,也要把此集合中所有概率转化成和为1
,并重新计算集合中每个事件的概率才行。但是这样转化起来比较麻烦,于是我在之前的基础上,新添加了基于集合中每个概率事件执行的可能性的方法,下面就来具体看看这个工具类RandomUtil
的使用吧。
今天涉及以下知识:
- RandomUtil 中方法简介
- RandomUtil 在
Activity
中的使用 - 运行效果图和项目结构图
- RandomUtil 源码
先来波效果图
===temp=1885 tempRate=4000.0
=====总概率为1,该执行概率为0.6,是否会执行:否
========maxRate=1.0999999999999999
===temp=1173 tempRate=7999.999999999998
===做其他的事===
一. RandomUtil 中方法简介
RandomUtil
作为一个概率执行的工具类,具有以下几个方法:
/***
* 随机生成 [start,end] 之间的数字
*
* @param start
* @param end
* @return
*/
public static int getRandomInt(int start,int end)
/***
* 根据概率执行
*
* @param rate 概率范围[0.0000,1.0000] 小数点后保留4位小数
* @return true:执行 false:不执行
*/
public static boolean getProbability(double rate)
/****
* 根据概率执行
*
* @param rate 概率范围[0.0000,maxRate] 小数点后保留4位小数
* @param maxRate 最大概率范围
* @return true:执行 false:不执行
*/
public static boolean getProbability(double rate,double maxRate)
/***
* 给一个集合(map)设置item,并给每个item设置执行概率
*
* @param map 集合
* @param key item
* @param probability 概率
*/
public static void putProbability(Map<String,Double>map,String key,double probability)
/***
* map中单个key根据概率是否执行
*
* @param key
* @return true:执行 false:不执行
*/
public static boolean getProbabilityByKey(Map<String,Double> map, String key)
二. RandomUtil 在 Activity 中的使用
下面贴出RandomUtil
在Activity
中使用时计算单个事件
和单个事件在集合中执行
可能性的主要代码:
//计算单个概率,总概率为1
boolean flag = RandomUtil.getProbability(0.6);
if (flag) {
LogUtil.i("=====总概率为1,该执行概率为0.6,是否会执行:是");
} else {
LogUtil.i("=====总概率为1,该执行概率为0.6,是否会执行:否");
}
//计算一组数据中单个item执行的概率
Map<String,Double>map=new HashMap<>();
//设置集合
RandomUtil.putProbability(map,"逛街",0.6);
RandomUtil.putProbability(map,"看电影",0.2);
RandomUtil.putProbability(map,"吃饭",0.3);
//是否吃饭
boolean eatFlag=RandomUtil.getProbabilityByKey(map,"吃饭");
if(eatFlag){
LogUtil.i("===去吃饭===");
}else{
LogUtil.i("===做其他的事===");
}
三.运行效果图和项目结构图
效果图:
===temp=1885 tempRate=4000.0
=====总概率为1,该执行概率为0.6,是否会执行:否
========maxRate=1.0999999999999999
===temp=1173 tempRate=7999.999999999998
===做其他的事===
项目结构图

四. RandomUtil 源码
RandomUtil
源码如下:
网友评论