【前端验证】关于那道经典概率题,用UVM环境来仿真下是男孩的概率

简介: 【前端验证】关于那道经典概率题,用UVM环境来仿真下是男孩的概率

在抖音上一直有一道争论不休的概率题:一个家庭有两个孩子,已知一个是男孩,另外一个也是男孩的概率是多大?A.1/2 B.1/3


对于概率论这个东西吧,我承认学的比较一般,尤其也没考过研所以对于大部分概率题是不敢去插嘴的。不过这个题感觉我又行了!


我秉承的观点是,概率是对大量随机事件分布统计结果的归纳与数学化。所以个人观点,就是把所有有两个孩子的家庭邀请过来,请两个女孩的家庭先回去,然后统计剩下这些有一个男孩的家庭数量a,再统计另外一个也是男孩的数量b,然后用b/a就得到了最终的概率。


鉴于芯片验证环境就是使用大量随机来模拟真实环境的,那么不妨我们用UVM的仿真环境来实测一下。使用 gen_uvm_agent 生成一个测试环境,那么不如我们就把两个孩子起名信号boy为0代表女孩为1代表男孩,之后根据题目进行一下约束:

rand bit [2 -1:0] boy;
constraint boy_transaction::boy_cons{
    |boy[1:0] == 1'b1;
}


约束也很简单,有一个是男孩那就是两个孩子“或”在一起是1就可以了,除此之外再没有其他的限制。那么接下来,让我们收集10000个家庭的情况也就是发10000个包,在driver中进行统计:

            if(req.boy[1:0] == 2'b11)begin
                boy_boy_cnt++;
            end


统计什么也很简单,就统计“2'b11”的家庭数量看看另一个也是男孩的总数是多少,然后在仿真结束后把boy_boy_cnt的数量打出来!


很显然,统计结果和我们的预期是一点都一样的:

UVM_INFO /home/xiaotu/Git_Path/gen_uvm_agent/gen_uvm_agent/boy_utils/src/boy_scb.sv(54) @ 1967530000: uvm_test_top.env.scb [boy_scb] Compare SUCCESSFULLY
boy-boy cnt = 3331
UVM_INFO /tools/synopsys/vcs/vcs-mx_vL-2016.06/etc/uvm-1.2/base/uvm_report_server.svh(894) @ 1968890000: reporter [UVM/REPORT/SERVER] 


显然,真实的统计结果就是10000个满足“一个家庭有两个孩子,已知一个是男孩”的家庭里,有3331个家庭满足“另外一个也是男孩”,所以概率是1/3。


已经把自己说服了(*^▽^*)


相关文章
|
16天前
|
缓存 前端开发 JavaScript
前端开发的必修课:如何让你的网页在弱网环境下依然流畅运行?
【10月更文挑战第30天】随着移动互联网的普及,弱网环境下的网页性能优化变得尤为重要。本文详细介绍了如何通过了解网络状况、优化资源加载、减少HTTP请求、调整弱网参数和代码优化等方法,提升网页在弱网环境下的加载速度和流畅性,从而改善用户体验。
95 4
|
3月前
|
JSON 前端开发 开发工具
初探在WSL中设置vim前端开发环境
初探在WSL中设置vim前端开发环境
|
14天前
|
机器学习/深度学习 自然语言处理 前端开发
前端神经网络入门:Brain.js - 详细介绍和对比不同的实现 - CNN、RNN、DNN、FFNN -无需准备环境打开浏览器即可测试运行-支持WebGPU加速
本文介绍了如何使用 JavaScript 神经网络库 **Brain.js** 实现不同类型的神经网络,包括前馈神经网络(FFNN)、深度神经网络(DNN)和循环神经网络(RNN)。通过简单的示例和代码,帮助前端开发者快速入门并理解神经网络的基本概念。文章还对比了各类神经网络的特点和适用场景,并简要介绍了卷积神经网络(CNN)的替代方案。
|
1月前
|
前端开发 数据安全/隐私保护
angular前端基本页面验证
angular前端基本页面验证
29 1
|
1月前
|
存储 前端开发 Java
验证码案例 —— Kaptcha 插件介绍 后端生成验证码,前端展示并进行session验证(带完整前后端源码)
本文介绍了使用Kaptcha插件在SpringBoot项目中实现验证码的生成和验证,包括后端生成验证码、前端展示以及通过session进行验证码校验的完整前后端代码和配置过程。
107 0
验证码案例 —— Kaptcha 插件介绍 后端生成验证码,前端展示并进行session验证(带完整前后端源码)
|
3月前
|
前端开发 JavaScript
这篇文章介绍了如何使用form表单结合Bootstrap格式将前端数据通过action属性提交到后端的servlet,包括前端表单的创建、数据的一级和二级验证,以及后端servlet的注解和参数获取。
这篇文章介绍了使用AJAX技术将前端页面中表单接收的多个参数快速便捷地传输到后端servlet的方法,并通过示例代码展示了前端JavaScript中的AJAX调用和后端servlet的接收处理。
这篇文章介绍了如何使用form表单结合Bootstrap格式将前端数据通过action属性提交到后端的servlet,包括前端表单的创建、数据的一级和二级验证,以及后端servlet的注解和参数获取。
|
3月前
|
前端开发 开发者 UED
数据校验的艺术:揭秘JSF如何将前端与后端验证合二为一,打造无缝用户体验
【8月更文挑战第31天】JavaServer Faces(JSF)是构建企业级Web应用的Java规范,提供了丰富的组件和API,便于快速搭建用户界面。JSF验证框架基于JavaBean验证API(JSR 303/JSR 380),利用注解如`@NotNull`、`@Size`等在模型类上定义验证规则,结合前端的`<h:inputText>`和`<h:message>`标签展示错误信息。
42 0
|
3月前
|
前端开发 JavaScript
【Azure 环境】前端Web通过Azure AD获取Token时发生跨域问题(CORS Error)
【Azure 环境】前端Web通过Azure AD获取Token时发生跨域问题(CORS Error)
|
3月前
|
前端开发 数据库 Python
中后台前端开发问题之验证用户提供的uid和token的有效性如何解决
中后台前端开发问题之验证用户提供的uid和token的有效性如何解决
20 0
|
4月前
|
前端开发
支付系统--微信支付21--搭建前端环境,payment-demo-front这个项目文件夹是前端显示文件,payment-demo是后端项目,支付页面常见三个页面:购买课程,我的订单,下载账单
支付系统--微信支付21--搭建前端环境,payment-demo-front这个项目文件夹是前端显示文件,payment-demo是后端项目,支付页面常见三个页面:购买课程,我的订单,下载账单