R语言:集卡活动概率测算模拟

news2024/12/23 18:00:20

背景:以支付宝集五福活动为代表的集卡类营销活动背后,每张卡出现的概率测算是非常重要的,假设我们可以预估有多少人参与活动以及大致每人能抽多少次,且限定一共有多少人能够集齐,在这些限定条件下,每张卡出现的概率应该如何计算呢?

R语言中提供的抽样函数和循环语句可以帮助我们实现这个计算过程

一、基本语句学习

1、循环语句:for、while

*for循环和while循环的区别,while循环的启示和终止状态是符合或不符合条件,for循环是到次数就停。

#for循环
for(i in 1:10) print("hello")##变量var在序列seq中,就一直重复执行statement

#while循环
i <- 10
while (i>0){print("hello");i <- i-1}##重复执行语句,直到条件不为真

对比r 和python的循环语句基本上是一样的思路

 三、Python 循环_格勒王的博客-CSDN博客循环语句汇总https://blog.csdn.net/weixin_47198715/article/details/129188876

2、抽样函数:sample

参数介绍

  • sample(待抽取序列,抽取数量,replace=TRUE,prob=c(每个样本出现的概率)
  • replace=TRUE|FALSE有放回|无放回抽样

示例

x <- sample(c(1,2,3,4,5,6,7,8),3,replace=TRUE)#在1-8个数字中有放回的抽3个数,每个数字出现的概率默认一致
x
#结果
[1] 8 7 1

x <- sample(c(1,2,3,4,5,6,7,8),3,replace=TRUE,prob=c(0.5,0.5,0,0,0,0,0,0))#在上面的例子中配置每个数字出现的概率
x
[1] 2 2 1

3、包含判断:%in%

B%in%A:判断B是否包含A

示例:

x <- sample(c(1,2,3,4,5,6,7,8),8,replace=TRUE)
x
[1] 2 7 6 3 1 1 1 6
c(1:4)
win<-c(1:4) %in% x
win
[1]  TRUE  TRUE  TRUE FALSE
sum(win)#sum(向量名称)向量中的值加总,如果是布尔值(true=1,false=0)
[1] 3

4、向量赋值

示例

prize <-c()##建立一个空向量
prize[1]=2##给第1个值赋值为2
prize

二、实操计算抽卡概率

问题:如何在已知预估参与用户和预估人均抽卡次数的情况下,限制集齐人数,反推每张卡的概率

一万个人,每人在1-8张卡片中有放回的随机抽取15张卡

每张卡的概率是:4张普通卡(概率16%),3张高级卡(概率10%),1张稀有卡(概率6%)

计算出有多少人集齐1-8张卡

步骤:

  • 循环抽卡次数10000次
for (i in 1:10000) {抽卡参数}
  • 在1-8中随机抽15次,有放回,把抽卡结果记录在向量x1里
x1<-sample(c(1,2,3,4,5,6,7,8),15,replace = TRUE,prob = c(0.16,0.16,0.16,0.16,0.1,0.1,0.1,0.06))
  • 判断1-8张卡的集合是否包含在抽卡结果里,即全部抽中
win<-c(1:8) %in% x1
  • 得到这1万个用户每个人分别抽中了几张卡(去重),并统计分布
prize[i]=sum(win)
table(prize)

完整代码

prize<-c()##建立一个空向量
for (i in 1:10000) {
  x1<-sample(c(1,2,3,4,5,6,7,8),15,replace = TRUE,prob = c(0.16,0.16,0.16,0.16,0.1,0.1,0.1,0.06))
  win<-c(1:8) %in% x1
  prize[i]=sum(win) #(等于8,集齐8张不同的卡)
}
table(prize)
##结果如下
prize
   3    4    5    6    7    8 
   1   71  749 3181 4258 1740 

优化上面的逻辑,为了让用户刚开始抽取的时候有成就感,前4次卡需要保证是不一样的,从第5次开始允许卡掉落重复,每张卡的概率是:4张普通卡(概率16%),3张高级卡(概率10%),1张稀有卡(概率6%)。计算出有多少人集齐1-8张卡

prize<-c()##建立一个空向量
for (i in 1:10000) {
  x1<-sample(c(1,2,3,4,5,6,7,8),11,replace = TRUE,prob = c(0.16,0.16,0.16,0.16,0.1,0.1,0.1,0.06))
  win<-c(1:4) %in% x1
  prize[i]=sum(win) 
}
table(prize)
##结果如下
prize
   1    2    3    4 
  31  788 4221 4960 
> 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/595496.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

CentOS 系统上安装 Jenkins

#######################注意我这里安装jenkins版本要求实际是要安装jdk11版本的~~~我一开始弄错了 您可以按照以下步骤在 CentOS 上安装 JDK&#xff1a; 1. 首先&#xff0c;打开终端并使用 yum 命令更新系统软件包列表。输入以下命令来执行此操作&#xff1a; sudo yu…

chatgpt赋能python:Python为什么闪退?

Python为什么闪退&#xff1f; Python作为一种高级编程语言&#xff0c;已经赢得了世界各地许多开发者的青睐。但是&#xff0c;有时候Python会因为各种原因而突然闪退&#xff0c;给开发者带来极大的困扰。那么&#xff0c;Python为什么会闪退呢&#xff1f; 1. 内存泄漏 内…

环境感知算法——2.CenterNet基于KITTI数据集训练

1. CenterNet简介 CenterNet采用了一种新的检测思路&#xff0c;即以目标中心点为基础&#xff0c;直接回归出目标的位置和大小。而传统的目标检测算法通常会先产生大量候选框&#xff08;Anchor&#xff09;&#xff0c;再通过分类器进行筛选&#xff0c;这种方法比较复杂。C…

selenium浏览器自动化测试

Selenium是一个用于Web应用程序的自动化测试工具。它直接运行在浏览器中&#xff0c;可以模拟用户在浏览器上面的行为操作。 Selenium入门 下载驱动 查看谷歌浏览器版本 谷歌浏览器输入网址的地方输入&#xff1a;chrome://version 下载与浏览器对应&#xff08;或相近&#x…

RK3588平台开发系列讲解(驱动基础篇)驱动模块传参

平台内核版本安卓版本RK3588Linux 5.10Android 12文章目录 一、驱动模块传参简介二、驱动模块传普通参数三、驱动模块传数组沉淀、分享、成长,让自己和他人都能有所收获!😄 📢在编写应用程序的时候,我们可以给 main 函数传递参数,比如 void main(int argc,char *argv[]…

【ChatGPT】如何利用ChatGPT来快速统计Excel数据?

系列文章目录 老板让你写个PPT没有头绪&#xff1f;没事&#xff0c;ChatGPT来帮你&#xff01;传送门 文章目录 系列文章目录前言一、不会公式&#xff1f;帮你生成二、不会处理数据&#xff1f;帮你处理写在最后 前言 自从人工智能横空而出&#xff0c;它在人们的生活中产生…

Apache配置与应用与网页安全优化

Apache配置与应用与网页安全优化 构建虚拟Web主机httpd服务支持的三种虚拟机类型基于域名的虚拟主机Options指令解释AllowOverride指令解析 基于IP地址的虚拟主机基于端口的虚拟主机Apache连接保持构建Web虚拟目录与用户授权限制Apache 日志分割AWStats分析系统 网页压缩网页缓…

研发工程师玩转Kubernetes——多Worker Node部署

在之前的系列中&#xff0c;我们都是在单Node上“玩转”kubernetes&#xff0c;熟悉了它很多指令和特性。从本节开始&#xff0c;我们开始探索多Worker Node的相关特性。 部署虚拟机 因为desktop版ubuntu非常占用内存&#xff0c;而且我们已经熟悉了一些基本操作&#xff0c;…

电能质量监测装置在半导体公司“大放异彩”

摘 要&#xff1a;半导体生产制造业在国民经济中起着举足轻重的作用&#xff0c;相关企业的规模也越来越大。其供配电系统稳定、可靠的运维不仅是其安全生产的基本保证&#xff0c;还关系到产品质量和生产的顺利进行。而半导体行业中大部分工艺设备对电能质量比较敏感&#xff…

kafka 的内部结构和 kafka 的工作原理

基本设置 让我们开始安装kafka。下载最新的 Kafka 版本并解压缩。打开终端并启动 kafka 和 zookeeper。 $ cd $HOME $ tar -xzf kafka_<version>.tgz $ cd kafka_<version> $ bin/zookeeper-server-start.sh config/zookeeper.properties # open another termina…

Web安全之常见攻防

前言&#xff1a; 在当下&#xff0c;数据安全与个人隐私受到了前所未有的挑战。如何才能更好地保护我们的数据&#xff1f;接下来分析几种常见的攻击的类型以及防御的方法。 一、XSS&#xff08;Cross Site Script&#xff09; 首先了解最常见的 XSS 漏洞&#xff0c;XSS (Cr…

Nginx的网站服务

Nginx网站服务 一、Nginx与apache的差异二、编译安装Nginx服务三、Nginx命令四、向系统添加nginx服务五、nginx配置文件六、http块的配置 一、Nginx与apache的差异 nginx相对于apache的优点&#xff1a; 轻量级&#xff0c;同样是web服务&#xff0c;比apache占用内存更少及资…

chatgpt赋能python:Python为什么运行不出结果?

Python为什么运行不出结果&#xff1f; 简介 Python是一种高级编程语言&#xff0c;可以帮助程序员快速开发软件应用。不过&#xff0c;在使用Python的过程中&#xff0c;你可能会遇到一些麻烦。其中一个常见的问题是Python运行不出结果。 如果你正在遇到这个问题&#xff0…

DAY18_基础加强-XMLDTDschema注解单元测试

目录 1 xml1.1 概述1.2 标签的规则1.3 语法规则1.4 xml解析1.5 DTD约束1.6 schema约束 2 注解2.1 概述2.2 自定义注解2.3 元注解 3 单元测试3.1 概述3.2 特点3.3 使用步骤3.4 相关注解 1 xml 1.1 概述 万维网联盟(W3C)官网&#xff1a;https://www.w3school.com.cn 万维网联盟…

解释公有云、私有云、混合云、边缘云、分布式云

Author:skate Time:2023/06/01 云计算是一种基于互联网的计算模式&#xff0c;它通过网络提供IT资源和服务&#xff0c;包括计算、存储、网络、应用等&#xff0c;以服务的形式向用户提供&#xff0c;用户可以按需获取和使用这些资源和服务&#xff0c;而无需拥有和管理这些资…

chatgpt赋能python:Python主类:一个强大的编程工具

Python主类&#xff1a;一个强大的编程工具 介绍 Python是一种高级编程语言&#xff0c;它已经成为了世界上最流行和广泛使用的编程语言之一。Python在各种领域都有着广泛的应用&#xff0c;包括科学计算、数据分析、网络编程、机器学习等等。 虽然Python具有许多有用的功能…

iPhone技巧之「合并PDF文档」

有时候我们在手机上需要将多个PDF文档合并为一个&#xff0c;方便发送或者观看。 如果电脑不在身边&#xff0c;或只想直接在手机上合并PDF&#xff0c;是不是需要下载什么新的app或者工具呢&#xff1f;答案是不需要的&#xff0c;如果你用的是苹果手机&#xff0c;用苹果自带…

点云数据处理方法的应用PCL函数库为例的设计与实现_kaic

摘 要 在计算机视觉和虚拟现实技术的发展过程中&#xff0c;点云数据已成为主要的三维数据表达形式。将点云数据转换成灰值图时&#xff0c;测算每一个像素点周边领域的点云&#xff0c;但是其效率精密度比较低。文中探讨了点云数据的多视图拼凑和滤波处理&#xff0c;明确提出…

网络编程知识点总结(1)

TCP/UDP对比 1.TCP面向连接 (如打电话要先拨号建立连接);UDP是无连接的&#xff0c;即发送数据之前不需要建立连接 2.TCP提供可靠的服务。也就是说&#xff0c;通过TCP连接传送的数据&#xff0c;无差错&#xff0c;不丢失&#xff0c;不重复&#xff0c;且按序到达;UDP尽最大…

【蓝桥刷题】备战国赛——区间修改、区间查询

蓝桥杯线段树模板题——区间修改、区间查询 &#x1f680; 每日一题&#xff0c;冲刺国赛 &#x1f680; 题目导航&#xff1a; 区间修改、区间查询 &#x1f387;思路&#xff1a;线段树 &#x1f531;思路分析&#xff1a; 本题涉及到了对区间操作的问题&#xff0c;因此&a…