一个非常好用的中奖概率控制器

news2024/11/26 2:00:50
本文首发于微信公众号: 小蚂蚁教你做游戏。欢迎关注领取更多学习做游戏的原创教程资料,每天学点儿游戏开发知识。

嗨!大家好,我是小蚂蚁。

今天分享一个非常好用的概率控制器,可以用于游戏中两种行为出现的概率控制。这个方法来自于《大师谈游戏设计》(作者:吉泽秀雄)一书中,作者提到的一个 WIN-LOSS 控制器。

这个 WIN-LOSE 主要用于赌博机中控制中奖与否的概率。

如图,就是一个 WIN-LOSS 表格,书中使用的是 16 进制,为了方便理解,我对其进行了修改和简化,改成了 10 进制,不过原理都是一样的。第一列表示的是点数,每个点数区间包含 10 个数字,右侧红色的格子表示不中奖,绿色的格子表示中奖。点数在 91 ~100 的时候,必定会中奖,点数在 1~10 的时候,基本上不会中奖,也就是说点数越大,中奖的概率就会越高。

除了点数之外,还有两个用于控制概率的值,一个是当抽到未中奖时,点数就会增加 M,另一个是当抽到中奖时,点数就会减少 N。

也就是说,增加值 M 较大的时候,中奖的概率就会提升的很快。减少值 N 较大的时候,一次中奖后,下一次中奖的概率就会降低很多,通过调整这个 M 和 N 的值,就能调整出非常多的中奖与否概率的组合。

虽然这是一个用于赌博机中的概率控制,但是很显然这个方法,可以应用于任何需要控制两个事件发生概率的地方。比如说用于敌人攻击的频率,敌人刚出来时的点数为 100,增加值 M 为 0,减少值 N 为 5,这样敌人一出来就会疯狂攻击,但是很快就会力不从心。或者让敌人刚出来时的点数为 30,增加值 M 为 5,减少值 N 为 1,这样敌人刚开始出来不怎么攻击,但是随着时间的增加,攻击频率会越来越高。

接下来,我们就制作一个示例,应用一下这个 WIN-LOSS 控制器。我们制作一个抽奖机,然后利用“点数增加值”和“点数减少值”来调整中奖的概率。

来到微信小游戏制作工具中,首先创建一个表格。

这个表格对应的就是 WIN-LOSS 图表,其中 1 表示中奖,0 表示未中奖。

接着,我们布置一个简单的场景。一个抽奖按钮,一个当前的点数,一个是否中奖的提示。

接着,创建三个变量。如果未中奖,点数就会加上“增加值”,如果中奖了,点数就会减去“减少值”。

最后,看一下抽奖按钮上的积木逻辑。

逻辑其实很简单,点击抽奖时,使用当前的点数除以 10 ,然后向上取整,可以得到表格中的行号,得到行号后,从 1~10 中取出一个随机数当作列号,抽取表格中的数判断是否等于 1,等于的话表示中奖,将点数减少。不等于的话表示未中奖,将点数增加。

最后,运行一下,抽个奖。

对于中奖与否的概率,我们可以通过修改“增加值”和“减少值”来对其进行调整。

不得说这个方法真的是很精巧,使用一个表格,两个变量,就能够实现对于概率的有效控制。

这个方法是值得纳入“游戏开发工具箱”的,因为它可以应用到很多的游戏中。作为一个游戏开发者,你应该有一个“游戏开发工具箱”,里面收纳了很多好用的工具,例如网格布局,查找算法,随机数控制......以及今天的这个 WIN-LOSS 概率控制器。这些工具会在游戏开发的过程中频繁的用到,能够帮助你极大的提升开发的效率。

另外,在了解了今天的这个方法之后,你大概也就知道那些抽奖机的原理了。当你点击抽奖按钮的那一刻,结果早就已经确定了,至于是转圈,抽卡,砸金蛋,还是刮刮卡,不过都是后续的表现形式而已。

当你持续多次没有中奖后,下一次中奖的概率就会比较大(没有人会玩一台始终无法中奖的机器),或许你可以再试一下,没准就中了。

当你中奖后,想要进一步乘胜追击的时候,不妨再想一想,因为下次中奖的概率可能会小很多,此时,适可而止落袋为安,或许是一个不错的策略。

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

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

相关文章

PHP MySQL 插入数据

使用 MySQLi 和 PDO 向 MySQL 插入数据 在创建完数据库和表后,我们可以向表中添加数据。 以下为一些语法规则: PHP 中 SQL 查询语句必须使用引号在 SQL 查询语句中的字符串值必须加引号数值的值不需要引号NULL 值不需要引号 INSERT INTO 语句通常用于…

《Linux Shell脚本攻略》学习笔记-第十三章

13.1 简介 现代Linux应用可以部署在专门的硬件、容器、虚拟机或是云端。 容器的缺点在于它以来于主机的系统内核。 虚拟机的防在于要占用大量的磁盘空间。 如果你想同时运行多个虚拟机,必须要有足够的内存来支撑各个虚拟机。否则,主机就不得不开始交换页…

SLS:基于 OTel 的移动端全链路 Trace 建设思考和实践

作者:高玉龙 (元泊)首先,我们了解一下移动端全链路 Trace 的背景:从移动端的视角来看,一个 App 产品从概念产生,到最终的成熟稳定,产品研发过程中涉及到的研发人员、工程中的代码行数、工程架构规模、产品发…

探索VGG网络与LeNet网络对精度的影响

1 问题在学习不同网络模型对实验精度的影响过程中,对我们的实验结果,各种参数数值的改变有何变化,有何不同。VGG-11网络与LeNet-5网络对精度和损失的影响研究。训练周期20其他参数都相同的方式来探索最终的精度。2 方法对于VGG-11网络&#x…

QTreeWidget 设置任意行背景色

设置任意某行,网上这类示例少,一般都是选中行、交替行、高亮行等设置。 比如我要将顶层节点的背景色修改一下。 方法1,先继承QTreeWidget,更改它的 drawBranches函数,在里面添加条件判断,然后根据需要设置颜色。 #i…

【计算机体系结构-01】指令集体系结构、微体系结构简介

1. “虚拟” to “现实” 首先可以看这张图片,下面的 Physics 所指的是我们的物理世界中看得见摸得到或者是客观存在的事物,而人类希望将自己的工作内容或者需求以某种方式映射到物理层面上,用物理变化带来的影响来完成人类工作内容。例如早期…

Python【r e】模块正则表达式[中]实战

正则表达式相关函数和符号用法:#正则表达式""".匹配任意某个字符[.]与转义字符的作用一致,表示匹配.,配合 ,[.],即匹配一次或则多次. text . 或则 text ...2.从头匹配或者从左往右匹配re.match()"""import …

IDEA整合Docker,一键打包服务镜像与启动容器

尝试了IDEA整合Docker,坑有些多,但经过查阅资料都一一解决了,写了个案例,感觉这种方式确实要方便很多。下面来整理下步骤: 一、安装Docker 准备一台Linux,我这里用的是centos 7 mini 版,然后安…

内网穿透的概念及解决方案

1.什么是内网穿透 在外网的web请求可以转发到内网的本地服务 2.什么是内网?什么是外网? 内网(也叫局域网(Local Area Network,LAN))是在一个局部的地理范围内,一般可以是是几米内(比如家庭内网),也可以是方圆几千米…

2023 年 10 大最佳 GIS 软件

有人说:一个人从1岁活到80岁很平凡,但如果从80岁倒着活,那么一半以上的人都可能不凡。 生活没有捷径,我们踩过的坑都成为了生活的经验,这些经验越早知道,你要走的弯路就会越少。 GIS 是一个分析地理相关性…

【算法】拓扑排序

目录1.概述2.代码实现3.应用本文参考&#xff1a; LABULADONG 的算法网站 1.概述 &#xff08;1&#xff09;拓扑排序 (Topological Sort) 是指将有向无环图 G (V, E) 中所有顶点排成一个线性序列&#xff0c;使得图中任意一对顶点 u 和 v&#xff0c;若边<u, v> ∈ E(…

esp32 使用u8g2图形库 IIC驱动OLED

简介&#xff1a;使用U8g2库进行OLED的显示十分简单&#xff0c;首先要包含两个库&#xff0c;U8g2lib和Wire&#xff0c;后者是IIC通信需要用。对于IIC接口的OLED&#xff0c;需要在程序中指定一下引脚的接口定义&#xff0c;如果是SPI接口&#xff0c;可以参考U8g2库自带例程…

【Leetcode】NC31 第一个只出现一次的字符(牛客网)、面试题 01.01. 判定字符是否唯一

作者&#xff1a;一个喜欢猫咪的的程序员 专栏&#xff1a;《Leetcode》 喜欢的话&#xff1a;世间因为少年的挺身而出&#xff0c;而更加瑰丽。 ——《人民日报》 NC31 第一个只出现一次的字符 第一个只出现一次的字符_牛客题霸_牛客网【牛…

数据结构与算法(三)——顺序查找和二分查找

什么是查找 在一些数据元素中&#xff0c;通过一定的方法找出与给定关键字相同的数据元素的过程。 什么是列表查找 也叫线性表查找&#xff0c;从列表中查找指定元素 列表查找是一种算法&#xff0c;对应的自然就有输入和输出&#xff1a; 输入&#xff1a;列表、待查找元素…

【实际开发08】- Controller 层处理入参 , 可避免进去 impl 层

目录 1. 增 / 删 / 改 - 记录日志 , 查询不记录日志 2. 第一批次 : 参数校验 ( id、id1 id2 、&#xff1f;) 3. 增 / 改 dto 判空 , 实体类层 ( entity ) 进行处理 4. 通用修改 的 impl 层可供 ( status、普通 ) 使用 5. 入参优先级 : Json > Map > Javabean 1. …

终于有人将Session和cookie讲明白了!一节课彻底搞懂

1 引出session cookie session与cookie属于一种会话控制技术。常用在身份识别&#xff0c;登录验证&#xff0c;数据传输等。举个例子&#xff0c;就像我们去超市买东西结账的时候&#xff0c;我们要拿出我们的会员卡才会获取优惠。这时候&#xff0c;我们怎么识别这个会员卡真…

软考那些事儿,看这一篇就够了!

软考7个常见问题解答一、报考条件凡遵守中华人民共和国宪法和各项法律&#xff0c;恪守职业道德&#xff0c;具有一定计算机技术应用能力的人员&#xff0c;均可根据本人情况&#xff0c;报名参加相应专业类别、级别的考试。因此&#xff0c;计算机软件资格考试报名条件不设学历…

ITIL 问题管理综合指南

什么是ITIL问题管理 问题是多个事件的原因或潜在原因。影响许多用户的重大事件或重复发生的事件可能会出现问题。此外&#xff0c;可以在基础设施诊断系统中识别问题之前 用户会受到影响。 事件会阻碍业务生产力&#xff0c;提供快速解决方案有助于确保业务运营的无缝连续性。…

第四章SpringFramework之Ioc

文章目录IoC思想认识什么叫依赖/耦合控制反转和依赖注入的理解IoC&#xff1a;Inversion of Control&#xff0c;控制反转。DI&#xff1a;Dependency Injection&#xff0c;翻译过来是依赖注入。为什么需要这样齿轮的例子来突出Ioc的重要IOC容器在Spring中的实现Spring 提供了…

剑指 Offer 36. 二叉搜索树与双向链表

剑指 Offer 36. 二叉搜索树与双向链表 难度中等619 输入一棵二叉搜索树&#xff0c;将该二叉搜索树转换成一个排序的循环双向链表。要求不能创建任何新的节点&#xff0c;只能调整树中节点指针的指向。 为了让您更好地理解问题&#xff0c;以下面的二叉搜索树为例&#xff1a…