不均匀硬币产生等概率/均匀硬币产生非等概率

2023-11-18

不均匀硬币产生等概率

已知随机数生成函数random(),返回0的概率是60%,返回1的概率是40%。根据random()实现一个随机数函数f(),使返回0和1的概率是50%。

连续投掷两次:
第一次为0,第二次为1:返回0
第一次为1,第二次为0:返回1

这样返回0/1的概率都是相同的。

#include <bits/stdc++.h>
using namespace std;

int main(){
    while(true){
        int a = random();
        int b = random();
        if(a== 0 && b == 1){
            cout << 1 << endl;
            break;
        }else if(a == 1 && b == 0){
            cout << 0 << endl;
            break;
        }   
    }
    return 0;
}

等概率问题还可以看看这个:LeetCode第 470 题:用 Rand7() 实现 Rand10()(C++)_zj-CSDN博客

均匀硬币产生非等概率

已知随机数生成函数random(),返回0或1的概率都是50%。根据random()实现一个随机数函数f(),使返回0的概率是30%,返回1的概率是70%。

使用二进制的思想去理解,假设现在有一位四位的二进制数(0,1表示),可能有:

0000,0001,0010,0011...1111

一共16种,表示的数字是0-15,可以认为每一位的0或1都是由random()函数生成,那么可以发现0-15之间的每一个数出现的概率都是相同的,都是1/16,表示出来就是:

random()*8 + random()*4 + random()*2 + random()*1

整体+1,就会得到1-16之前的均匀随机数。

使用拒绝采样的思路,当数字大于10的时候进行丢弃,那我们就得到了均匀的1-10之前的随机数,当数字%3 == 0的时候(3,6,9),返回0,否则返回1,这样就得到了概率0.3和0.7。

具体代码就不贴了,很简单。不过这样舍弃的数字有点多,可以多增加一位二进制位,最后得到1-30之前的随机数,思路是一样的。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

不均匀硬币产生等概率/均匀硬币产生非等概率 的相关文章

  • 【面试必备】我跟面试官聊了一个小时线程池!

    大家好 这篇文章主要跟大家聊下 Java 线程池面试中可能会问到的一些问题 全程干货 耐心看完 你能轻松应对各种线程池面试 相信各位 Javaer 在面试中或多或少肯定被问到过线程池相关问题吧 线程池是一个相对比较复杂的体系 基于此可以问出
  • Spark集群搭建——SSH免密码验证登陆

    为什么80 的码农都做不了架构师 gt gt gt 机器准备 笔者有三台机器 左侧栏为ip 右侧为hostname 三台机器都有一个名为spark的用户 通过ping验证三台是可以通信的 192 168 248 150 spark mast
  • 前端之JavaScript

    目录 一 初始JavaScript 1 什么是JavaScript 2 JS和HTML以及CSS的关系 3 JS的组成 二 第一份JS代码 几种JS的书写形式 JS的输入输出 三 JS的核心语法 1 变量 几种类型 1 1 number数字
  • Tenserflow学习(二)——MNIST数据集分类三层网络搭建+Dropout+tensorboard可视化

    1 上代码 import tensorflow as tf from tensorflow examples tutorials mnist import input data 载入数据 one hot参数把标签转化到0 1之间 mnist
  • 将模型从 PyTorch 导出到 ONNX 并使用 ONNX 运行时运行它

    将模型从 PyTorch 导出到 ONNX 并使用 ONNX 运行时运行它 可选 在本教程中 我们描述了如何将 PyTorch 中定义的模型转换为 ONNX 格式 然后在 ONNX 运行时中运行它 ONNX 运行时是针对 ONNX 模型的以
  • 为何not in的筛选条件中不可以存在空值

    开发工具与关键技术 Oracle sql plus PLSQL Developer 作者 吴晓佩 撰写时间 2019年4月6日 上次我在子查询中用多行操作符 not in 进行数据查询时出现过此种情况 数据是空的 为了验证一下结果 我用in
  • Latex引用图片 发现 显示的图片标号不对

    在latex的图片代码中 当图片的label写在如下位置时 begin figure centering 居中 centering 子图居中 includegraphics width 8cm xxx pdf label oo 图片引用标记
  • mongodb如何实现数组对象求和

    原本地址 mongodb如何实现数组对象求和 mongodb在计算集合数组值时候 我们通常会想到使用 group与 sum 但是如果是数组里面多个json对象 并且还需要根据条件过滤多个对象的内容该如何处理 现在让我们来实现它 假设mong
  • 转行做Linux运维工程师,简历的项目经验应该怎么写比较好?

    转行做linux运维工程师 首先要了解linux运维要做多少事情 需要什么基础 然后根据自己的情况进行有的放矢的追踪学习 先了解下做linux运维工程师需要做的事情 1 熟悉linux命令基本操作 玩不转基本操作别的都是空中楼阁 2 熟悉t
  • PNG文件格式分析

    目录 PNG简介 PNG文件组成成分是什么 File header Chunks 关键数据块 辅助数据块 实例分析 分析下图 File header Chunks 关键数据块分析 辅助数据块分析 PNG总结 参考文献 PNG简介 PNG是2
  • C语言中内嵌汇编asm语法

    内联汇编使用 asm C 和 asm C和C 关键字声明 语法格式如下所示 内联汇编支持大部分的ARM指令 但不支持带状态转移的跳转指令 如BX和BLX 指令 asm instruction instruction 必须为单条指令 asm
  • 计算机网络课程.doc,计算机网络课程-网络教学.DOC

    计算机网络课程 网络教学 计算机网络 课程教学大纲 Computer Networks 学时 50 60 一 简要说明 计算机网络是面向电子信息工程本科专业的一门重要的专业核心课 也是计算机科学与技术专业的专业基础课 目的是使学生掌握计算机
  • visual studio community 2019安装

    新电脑装好了pycharm anaconda 打算装cuda的时候 发现要先装visual studio 下载地址在微软官网https visualstudio microsoft com zh hans 选择community 2019下

随机推荐

  • 利用K-means聚类算法对未标注数据分组

    k 均值算法的工作流程 首先 随机确定k个初始点作为质心 接着 将数据集中的每个点分配到一个簇中 即为每个点找到距离其最近的质心 并将其分配给该质心所对应的簇 然后 每个簇的质心更新为该簇所有点的平均值 再次重新分配数据集中所有的点 如果所
  • UE4_插件开发引用第三方库编译报错[Error C4668]

    C Program Files x86 Windows Kits 10 include 10 0 16299 0 um winioctl h 7542 error C4668 WIN32 WINNT WIN10 TH2 is not def
  • 基于 APISIX 的服务网格方案 Amesh 积极开发中!

    作者 lingsamuel API7 ai 云原生技术专家 Apache APISIX Committer 在云原生快速发展的前提下 服务网格领域也开始逐渐火热 目前阶段 大家所熟知的服务网格解决方案很多 每种产品又各有其优势 因此在面对不
  • 禁止浏览器访问某些页面

    windows下 利用php apache http代理 实现本地页面黑名单 背景 准备工作 解决方案 背景 有一个项目 需要给第三方桌面软件做二次开发 但是这个软件启动时会弹出一个页面 这个页面的权限很大 如果不禁止掉的话 会给系统安全带
  • 51Nod 1081 子段求和

    题目链接 http www 51nod com Challenge Problem html problemId 1081 include
  • linux笔记整理

    Linux基础 一 基础目录 根目录 下 bin 存放普通用户可以使用的命令 boot 存放引导程序 内核等 dev 设备文件目录 etc 配置文件目录 home 普通用户家目录 lib 库文件和内核模块存放目录 lib64 64位库 pr
  • mybatis 日期格式化

    例子 SELECT date format create date Y m d H i s date format update date Y m d FROM user Y m d H i s 带时分秒 Y m d 不带时分秒
  • 设计一个算法判断表达式中的括号是否匹配

    一 问题描述 设计一个算法判断表达式中的括号是否匹配 二 问题解答 解析 这里需要用到STL在算法设计中的应用 STL在算法设计中的应用有如下几种 存放主数据 存放临时数据 检测数据元素的唯一性 数据的排序 优先队列作为堆 因此这里需要用上
  • 安装visio报错,提示无法安装64位版本的Office,找到了以下32位程序怎么办

    今天安装Visio准备用来写系统详细说明书上面画图的结果发现居然报错 实在是我也没有装过office 试过了几个方案什么office修复助手啊 什么什么的发现卵用没有 最后解决方案 win r打开运行 输入regedit 依次到HKEY C
  • 服务器拔下内存条系统不能启动,电脑主板不能启动的解决方法

    电脑主板不能启动的解决方法 因为主板扩展槽或扩展卡有问题 导致插上显卡 声卡等扩展卡后 主板没有响应 因此造成开机无显示 例如蛮力拆装agp显卡 导致agp插槽开裂 即可造成此类故障 下面是JY135小编收集整理的电脑主板不能启动的解决方法
  • 操作系统习题整理

    操作系统习题整理 从网上和课本上汇总整理了一些操作系统相关的习题 可以作为复习资料使用 1 操作系统是一种 B A 通用软件 B 系统软件 C 应用软件 D 软件包 2 操作系统是对 C 进行管理的软件 A 软件 B 硬件 C计算机资源 D
  • replaceAll()正则表达式替换内容

    String input camelCasing input input replaceAll A Z 1 System out println input 输出结果为 camel Casing
  • Pandas rank()函数排名的用法与解释

    之前搜关于pandas rank 函数的帖子 好几个大哥都是照搬书 当然也有一些大神直接一顿操作 截图 我结合了书还有自己的理解 希望没有错误 也希望和我一样的新手能看懂 谢谢 1 rank 默认情况下 rank 通过将平均排名分配到每个组
  • thinkphp6 入门(6)--中间件是什么 怎么用

    一 什么是中间件 当客户端发送请求至服务器时 HTTP请求会经过多个中间件 最后返回响应给客户端 中间件可以 在请求到达目标控制器或动作之前对请求进行操作 可以在响应离开目标控制器或动作之前对响应进行操作 二 中间件的作用 我们可以在不修改
  • 【Linux学习】vim编辑器的使用

    Linux环境中vim编辑器的使用 前言 一 vim是什么 二 vim的使用 1 vim的三种模式 1 1 命令模式 Command mode 1 2 输入模式 Insert mode 1 3 底线命令模式 Last line mode 2
  • xshell5中文破解版

    http www xue51 com soft 1442 html
  • 护网面试题

    1 有无安全设备的使用经验 2 了解过TOP10没有 1 SQL注入 2 失效的身份认证和会话管理 3 跨站脚本攻击XSS 4 直接引用不安全的对象 5 安全配置错误 6 敏感信息泄露 7 缺少功能级的访问控制 8 跨站请求伪造CSRF 9
  • 解决找不到mfc140.dll的问题

    mfc140 dll控件常规安装方法 仅供参考 如果在运行某软件或编译程序时提示缺少 找不到mfc140 dll等类似提示 您可将从脚本之家下载来的mfc140 dll拷贝到指定目录即可 一般是system系统目录或放到软件同级目录里面 或
  • Neo4j宣布下一代图数据平台Neo4j 5上线

    增强的可扩展性 敏捷性 高效率和性能优势使企业能够在任何环境中更快 更轻松地创建和部署智能应用程序 中国北京 2022 年 11 月 10日 图技术的领导者Neo4j 今天宣布了下一代可用于云端的图数据平台Neo4j 5上线 在传统数据库的
  • 不均匀硬币产生等概率/均匀硬币产生非等概率

    不均匀硬币产生等概率 已知随机数生成函数random 返回0的概率是60 返回1的概率是40 根据random 实现一个随机数函数f 使返回0和1的概率是50 连续投掷两次 第一次为0 第二次为1 返回0 第一次为1 第二次为0 返回1 这