美文网首页
随机数计算概率执行的一种方式

随机数计算概率执行的一种方式

作者: 奔跑的佩恩 | 来源:发表于2021-03-09 08:24 被阅读0次

前言

Android开发过程中,我们有时会涉及到到概率执行问题。我们可以通过随机数类Random来做一个简易实现。这里我封装了一个随机数处理工具类——RandomUtil,下面来讲讲它的使用吧。

今天涉及知识:

  1. RandomUtil 简介
  2. 概率执行测试验证
  3. RandomUtil 在 Activity 中使用
  4. 效果图和项目结构图
  5. RandomUtil 源码

先来波效果图


效果图.gif

一. RandomUtil 简介

RandomUtil是基于Random的一个封装工具类。主要用于处理获取某一范围内的随机数值判断某概率下动作是否执行等。
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)

二.概率执行测试验证

getProbability(double rate)主要用于判断概率为rate时,动作是否执行的问题。如概率设置为0.23时,某段代码是否执行。那么这里就需要对getProbability(double rate)执行返回的结果做大量采集统计。
getProbability(double rate)执行10000次,统计其中返回true的次数,最后测算出结果,看是否与开始设置的概率相近。
下面给出测试代码:

        double rate=0.23;//要验证的概率

        //采集10000次执行,统计概率准确性
        double count=0;
        int sum=10000;
        for (int i = 0; i <sum ; i++) {
            if(RandomUtil.getProbability(rate)){
                count++;
            }
        }
        double result=count/sum;
        String message="设置概率:"+rate+", 采集"+sum+"次执行概率结果:"+result;
        LogUtil.i("====="+message);

最后打印结果:

=====设置概率:0.23, 采集10000次执行概率结果:0.2347

相差不大,验证基本可用。

三.RandomUtil 在 Activity 中使用

下面给出RandomUtilActivity中使用代码:

public class TempActivity extends AppCompatActivity{

    private TextView mTvTest;
    private Button mBtnTest;

    @Override
    protected void onCreate(@Nullable Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_temp);

        //初始化控件
        initView();
        //初始化数据
        initData();
        //控件监听
        setListener();
    }

    /**初始化控件**/
    private void initView(){
        mTvTest=findViewById(R.id.mTvTest);
        mBtnTest=findViewById(R.id.mBtnTest);

    }

    private void initData(){

    }

    /**控件监听**/
    private void setListener() {

        mBtnTest.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                test();
            }
        });

    }

    private void test(){
        double rate=0.23;//要验证的概率

        //采集10000次执行,统计概率准确性
        double count=0;
        int sum=10000;
        for (int i = 0; i <sum ; i++) {
            if(RandomUtil.getProbability(rate)){
                count++;
            }
        }
        double result=count/sum;
        String message="设置概率:"+rate+", 采集"+sum+"次执行概率结果:"+result;
        LogUtil.i("====="+message);

        mTvTest.setText(message);
    }
}

四.效果图和项目结构图

效果图.gif 项目结构图.png

五.RandomUtil 源码

RandomUtil 源码如下:

相关文章

  • 随机数计算概率执行的一种方式

    前言 在Android开发过程中,我们有时会涉及到到概率执行问题。我们可以通过随机数类Random来做一个简易实现...

  • 随机算法的应用

    用于计算概率,无需通过复杂的数学公式进行具体场景的概率计算,只需用随机数模拟出相关场景,即可得到对应概率。 计算生...

  • Pseudo-random algorithm: prd and

    计算机产生的大多数随机数都是伪随机数。是按照分布概率产生随机数字的过程,数字在概率分布上满足随机要求,但实际上是计...

  • 概率计算的执行

    前言 在之前我讲过了一个概率执行的工具类,但此工具类只能用于计算某件事有多少概率会执行。由于我们有时会有这样一种需...

  • 仿真在数模中的应用

    仿真是一种常见的解题方法,一般采用蒙特卡洛法进行仿真。(即使用随机数来解决计算问题) 常用来计算某概率不确定的事件...

  • java抽奖工具类

    整体思路: 奖品集合 + 概率比例集合 将奖品按集合中的顺序概率计算成所占比例区间,放入比例集合。并产生一个随机数...

  • R语言与生信应用27-R语法-随机数

    生成随机数 R中的概率分布函数 rnorm: 根据给定的平均值和标准偏差生成随机正态变量 dnorm: 计算一个点...

  • 01发生器产生均匀分布

    题目 1.有一个随机数发生器,能以概率p生成0,以概率1-p生成1,问如何做一个随机数发生器,使得生成0和1的概率...

  • 概率简要学习记录

    随机数问题 构造均匀的随机数发生器 要等概率才可以丢掉 不均匀的随机数产生器 采样问题 水库采样利用数组和随机数取...

  • 创建数字钱包(三)助记词

    BIP39解释 定义 BIP39[1]定义了一种将计算机产生的随机数翻译成人类可读的方式,初衷很简单:结合BIP3...

网友评论

      本文标题:随机数计算概率执行的一种方式

      本文链接:https://www.haomeiwen.com/subject/vwruzktx.html