从找零到人民币面额设计

JAVASCRIPT基础(打印杨辉三角,金钱找零系统) 实现简单的JAVASCRIPT交互式网页设计 使用JAVASCRIPT打印出杨辉三角 根据第一章所讲,创建一个HTML文件 代码如下: <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>杨辉三角</title> <script type="tex... 阅读详情
引子
晚上坐飞机从北京回成都,在机场候机花了23元买了一袋麻辣牛肉干。身上没零钱,就拿了一张100给售货员找零77。突然觉得这件事情太好玩儿了。中国发行的货币有100、50、20、10、5、1这几种面额的纸币。为什么我们的面额要这样设计呢?不这样设计会怎样?假设这几种面额的设计是合理的,那么这些纸币要按照什么样的比例进行发行才能保证我们生活中给100找73的这个看似很简单的事情能够正常进行呢?地球太神奇了。


面额为什么这样设计?
面额的设计会影响我们什么?面额设计的目的目标又是什么?如果我任意设计面额1,4,5,8,9这样。看似不合理,但是它会有什么不好的地方吗?我们不想清楚这个问题,我们就不知道怎么样的面额设计才是合理的,更不知道设计面额的时候需要考虑的是什么。


如果我们只发行100元的纸币。这意味着货币面额的本身就不能支持价值100元一下的商品的交易,这说明面额设计需要考虑【可用性】。


如果仅仅考虑可用性,我们可以只发行1元的纸币。理论上,我们可以用N个1元购买任意金额的商品。但是,如果想要买99元的东西,就开始悲剧了。这说明面额设计需要考虑【便捷性】。


如果我们认为便捷性唯一的考量因素是我们支付时需要支付的纸币的张数。那么,为什么我们不每个面额的纸币都发行一张呢?比如,我们有1、2、3、4、5、6、7、8、9、10、11、12、13、14...97、98、99元,这样任意100以内的金额,我们只需要一张纸币就足够了。我在机场只需要给售货员一张23的纸币就ok了。


问题在于,我怎么知道我到了机场我就想买那袋23元的麻辣牛肉干。而不是旁边的30的五香牛肉干?如果我提前不知道,或者很难预测,那我为了达到只需要支付一张纸币的”便捷性“,我就要准备1~99面额的纸币各一张,就身上随时要携带4950元,一共99张纸币,我们还能说这是便捷的吗?


所以,我们在设计纸币面额的时候不仅仅需要考虑到可用性和最直观的便捷性这些发生在交易一瞬间的特性,也要考虑到”现金交易的时间、金额的【不确定性】。正是因为这个不确定性,又会反过来影响我们的【便捷性】,所以,我们设计编辑的面额,不仅仅是支付一个特定金额的便捷,而是支付任意金额的便捷。


再想,如果用1,4,5,8,9这样的方式进行设计,会有什么问题吗?假设我们1~9出现的概率相同,那么可以得到这样一个最“便捷”的表
1: 1张1元
2: 2张1元
3: 3张1元
4: 1张4元
5: 1张5元
6: 1张5元 + 1张1元
7: 1张5元 + 2张1元
8: 1张8元
9: 1张9元
统计:1元纸币出现的概率为:5/9,5元纸币出现的概率为:3/9,4\8\9出现的概率都是:1/9,这说明,我们这样的设计本身就不是对称的。4\8\9这样的面额设计出来被人使用的概率就很小,我们就不要提供这样的面额。【使用率】。
如果按照1,2,5这样的方式进行设计:
1: 1张1元
2: 1张2元
3: 1张1元 + 1张2元
4: 2张2元
5: 1张5元
6: 1张5元 + 1张1元
7: 1张5元 + 2张1元
8: 1张5元 + 1张2元 + 1张1元
9: 1张5元 + 2张2元
统计:1张纸币出现的概率为:5/9,2元纸币出现的概率为:6/9,5元纸币出现的概率为:5/9。几乎一摸一样。


我们在上面的讨论中没有涉及到找零。原因很简单,比如,我买了23元的牛肉干,我给的是100。其实问题就变成了售货员如何给我77。所以问题是不变的,都是如何用最少的纸币构造出特定的金额,问题的核心并不是由谁来构造,如果我刚好身上有一堆零钱,就该我掰手指点钱了。于是,我们设计的重点就可以简化成,如何【便捷】的构造金额。


上面的例子纯属虚构,我们人民币并没有2元的面额。那问题就来了,我们的人民币的面额设计为什么这么没有对称的美感呢?为什么我们有20元的面额,却没有2元的面额?是很随意的决定?【50、20、10】,【5,2,1】不更加有美感吗?如果我们没有2元的面额,这意味着什么?1元面额的增多?是不是因为我们有1元的硬币呢?那为什么又要有硬币呢?有了纸币,硬币存在的必要性又是什么?




按照什么比例发行纸币?
如果按照现在人民币的面额1,5,10,20,50来进行设计,我们需要各种纸币需要按照什么样的比例来发行呢?
在回答了面额要如何设计以后,这个问题现在变得容易了,我们假设1~99出现的概率一致。那我们只要把每个金额的最简方式列出来,再统计比例就行了。不想算了(算是计算的算)。
简易的找零系统 简单的找零系统,没有后台的数据库。可以实现5毛,1元硬币的显示。 立即下载

相关推荐

最少硬币找零算法

这是一个利用动态规划的最少硬币找零算法,时间效率符合要求

用jsp声明编写一个函数,实现纸币找零的功能

exchange.html: <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>Insert title here</title> </head> <body> <form action="exchange.jsp"&g...

Toxic_Boy的博客 7454

Python实现的一个找零钱的小程序代码分享

Python写的一个按面值找零钱的程序,按照我们正常的思维逻辑从大面值到小面值的找零方法,人民币面值有100元,50元,20元,10元,5元,1元,5角,1角,而程序也相应的设置了这些面值。只需要调用函数时传入您想要找零的金额,程序会自动算各个面值的钱应该找多少张。如传入50元,则系统自动算出找零50元一张面值,如果传入60块7毛,则程序自动算出该找零50元一张,10元一张,5角一张,1角两张。 # encoding=UTF-8   def zhaoqian(money):     loop=True     tmp=['总金额:'+str(money)+'元']           # 面

货币找零系统

例:编写一个金额找零系统,用输入框输入一个整数,表示找零的数量,数值在1~100之间,假如系统中有50,20,10,5,1这五种面额的纸币,显示每种纸币应该找的数量。 <html> <head> <title>Inser title here</title> </head> <script typ...

芒果summer小仙女 8841

AHB不对称半桥反激电路设计(三)主要器件参数规格计算

本文介绍了AHB拓扑变压器的设计步骤与核心参数计算,包括主控芯片选择、工作原理分析及参数计算。作者选择DK87XXD集成MOS方案,详细阐述了输入电压范围、反射电压限定、匝比计算、工作频率设定、原副边电流值、电感量计算、磁芯选择、匝数计算、谐振电容设计等关键步骤。通过公式推导与实例计算,展示了150W电源的变压器设计过程,最终确定匝比5.5、原边22匝、副边4匝、电感量200uH等参数。文章还讨论了谐振电容与漏感的关系,为后续调试提供理论基础。该设计方法结合理论分析与工程实践,适用于AHB拓扑电源开发。

【Simon】的博客 3332

TwinCAT3入门教程3——PLC程序变量定义和硬件IO关联

目录 1、IO输入输出变量定义和硬件关联 1.1 IO输入 1.2 IO输出 1.3 PLC变量和IO模块关联 1.4 测试IO输出点 2、伺服变量关联 1、IO输入输出变量定义和硬件关联 1.1 IO输入 添加全局变量IO_Global 变量定义 (*==========================================IO输入===============================================================*)

panjinliang066333的博客 1万+

找零问题(Java版)

输入一个整数参数,以集合形式表示各种纸币找零的数量,输入1~100中的值,假如系统中有50、20、10、5、1这5种面额的纸币,显示每种纸币应该找的数量, 例如: 78元应该为50元1张、20元1张、5元1张、1元3张 。 <%@ page language="java" import="java.util.*" pageEncoding="utf-8"%> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"&g

挖洞的杰瑞的博客 2319

手把手教你用AFL挖掘C程序漏洞:从安装到实战(附常见错误排查)

本文详细介绍了如何使用American Fuzzy Lop (AFL)对C/C++程序进行模糊测试,从环境准备、目标程序插桩编译、初始语料库构建到实战运行与结果分析。重点讲解了AFL的安装、常见错误排查(如核心转储配置、执行速度优化)以及提升测试效率的高级策略(如持久模式、并行化),帮助开发者和安全工程师高效挖掘程序漏洞。

weixin_29014237的博客 407

找零(用最少张数的人民币)

设人民币的面额有(以元为单位)1分、2分、5分、1角、2角、5角、1元、2元、5元、10元、20元、50元。编写函数void change(double m,double c);其中m为商品的价格,c为顾客付款,函数能输出应给顾客找零金额的面额的人民币张数,且张数之和为最小。要求在主函数中输入商品价格和顾客付款,调用函数得到结果。 #include <iostream> using n...

Aoke20020226的博客 2750

window下安装并使用nvm(含卸载node、卸载nvm、全局安装npm)

文章目录一、卸载node二、安装nvm三、配置路径和下载源四、使用nvm安装node五、nvm常用命令六、卸载nvm七、遇到的问题 nvm 全名 node.js version management,顾名思义是一个nodejs的版本管理工具。通过它可以安装和切换不同版本的nodejs。 一、卸载node 如果你已经安装了node,那么你需要先卸载node,如果你没有安装那直接跳过这一步到下一步。 打开控制面板 -> 打开程序和功能 -> 右上角搜索输入node -> 右键卸载 为了确保彻底

HuangsTing的博客 41万+

4D毫米波雷达

详解4D成像毫米波雷达

sangba2019的博客 2391

“人民币找零”问题的贪婪法解决算法

/**//*    标题:>应试编程实例-[递推算法程序设计]    作者:成晓旭    时间:2002年09月14日(18:20:00-20:18:00)          实现“装箱”问题的贪婪算法实现函数    时间:2002年09月14日(22:00:00-23:18:00)          实现“装箱”问题的贪婪算法实现函数    时间:2002年09月14日(18:20:38-22:

软件开发资料汇总 451

OpenStack ussuri 私有云平台搭建企业级实战

openstack是一个云操作系统,这个操作系统控制着数据中心中的计算,存储和网络资源。所有这些资源的管理都是通过API来来实现的,并且管理资源都有相应的认证机制。在openstack中有一个叫做dashboard的仪表盘,这个仪表盘通过web界面可以管理这些在DC中的资源。除了能提供IaaS功能外,你还可以使用orchestration,错误管理和服务管理等服务来确保应用的高可用性。

悦分享 2337

c语言贪心算法找零钱,数据结构--贪心算法解决找零钱问题 这里用的是人民币()...

// 实验小结 吴新强于2013年3月20日0:19:08 桂电 2507实验室// 贪心算法解决找零钱问题 这里用的是人民币()using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.IO;namespace Greedy_Algorithm{class Pro...

weixin_36102776的博客 756

华为流程L1-L6业务流程深度细化到可执行【附全文阅读】

该文档主要介绍了华为业务流程的深度细化及相关内容,包括流程框架、建模方法、流程模块描述、流程图建模等,旨在帮助企业构建有效的流程体系,实现战略目标。

cdfunlove的博客 4002

【异常】Claude Code CLI工具 模型加载异常 /init报错排查与完整解决方案 There‘s an issue with the selected model (glm-5). It

此类跨厂商模型配置报错,核心诱因是API生态的兼容性不匹配。优先使用工具原生支持的模型体系,可快速解决90%以上的同类报错;若需跨厂商使用目标模型,需完成API端点、鉴权密钥、模型ID的全链路适配,确保全流程配置合规,即可完成异常修复。

奶爸的编程之路,也就一周冷个三天 3700
上一篇: 从ORM到尾差计算
下一篇: 脑法之一 --- DEBUG与搜索算法
kiwi小白
博客等级 码龄14年 153粉丝 154原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值