当前位置: 首页 > news >正文

给定非均匀012产生函数,构造均匀012产生函数

给定非均匀012产生函数,构造均匀012产生函数。非均匀012产生函数的概率是未知的。

思路:拒绝采样

  • 设产生0、1、2的概率分别是 p p p q q q r r r p > 0 , q > 0 , r > 0 p>0,q>0,r>0 p>0,q>0,r>0 p + q + r = 1 p+q+r=1 p+q+r=1
  • 那么产生3个数,且0、1、2均恰好产生一次的概率为 p q r pqr pqr,这些概率是均等的。
  • 亦即产生012、021、102、120、201、210的概率是相同的。
  • 因此可以连续产生3个数,判断产生的是否是这几种之一,把其他的抛弃。那么,剩下的模式每一种产生的概率为 p q r pqr pqr,是均等的。
  • 由于0、1、2在剩下的模式中任一位置产生的概率均为三分之一,因此任意返回一个位置的数即可。

代码

#include <iostream>
using namespace std;
int rand012(); //non-uniform 0, 1, 2
bool legal(int a, int b, int c){
    return a != b && b != c && a != c;
}
int uni_rand012() { //uniform 0,1,2
    int a, b, c;
    do{
        a = rand012();
        b = rand012();
        c = rand012();
    }while(!legal(a, b, c));
    return a;
}

相关文章:

  • Pycharm+CodeGPT+Ollama+Deepseek
  • 【1.8w字深入解析】从依赖地狱到依赖天堂:pnpm 如何革新前端包管理?
  • python学习笔记,python处理 Excel、Word、PPT 以及邮件自动化办公
  • Fastapi + vue3 自动化测试平台(5)-- 封装树形结构列表生成器
  • NewMap10.3土地勘测定界自动化系统
  • 程序员-DeepSeek深度使用指南
  • Linux中线程创建,线程退出,线程接合
  • led+串口代码 重定向 STM32F030F4P6 fgetc multiply defined错误
  • 浏览器的Cookie 过期时间存储
  • sass中@import升级@use的使用区别与案例
  • 群联AI云防护——针对四层与七层协议的精细化安全防护方案
  • C# 添加图标
  • 函数式自定义组件调用
  • 冒险岛079 V8 整合版源码搭建教程+IDEA启动
  • 【产品资料】陀螺匠·企业助手v1.8 产品介绍
  • 练习题:39
  • Redis哈希槽机制的实现
  • Containerd 简介、安装与使用指南
  • Lineageos 22.1(Android 15) 编译隐藏API的 android.jar
  • DeepSeek 开放平台无法充值 改用其他平台API调用DeepSeek-chat模型方法
  • 网站seo文章该怎么写/描述优化方法
  • 网站二维码收费怎么做/联合早报 即时消息
  • 帮别人做钓鱼网站/网店网络推广方案
  • 多伦网站建设/写软文的平台有哪些
  • 房屋装修效果图大全/北京百度推广优化
  • wordpress 上传网站/seo月薪