办公室中打水故事

简介: 交代下故事背景,办公室中有个电热水壶,办公室内的人员公用。其中还有个潜规则,就是若谁在接水是发现电热水壶中没有水(就是自己的杯子没有接满),他/她就负责给电热水壶注满水。 故事是,一段时间,本人喝水不多,但连续多次去接水喝,都是没有接满杯子就没水了。本人开始吐槽自己的运气和人品,但小师弟就说这事因为我的杯子原因。为此,我们争论了好几次。个人语言表达能力有限,知道这是个常识性问题,还是未能

交代下故事背景,办公室中有个电热水壶,办公室内的人员公用。其中还有个潜规则,就是若谁在接水是发现电热水壶中没有水(就是自己的杯子没有接满),他/她就负责给电热水壶注满水。

故事是,一段时间,本人喝水不多,但连续多次去接水喝,都是没有接满杯子就没水了。本人开始吐槽自己的运气和人品,但小师弟就说这事因为我的杯子原因。为此,我们争论了好几次。个人语言表达能力有限,知道这是个常识性问题,还是未能说服他。


昨夜在床上看书,突发奇想,用事实说服吧。既然是学计算机的,那就把情况模拟一下好了。


算法:

初始化人员各种参数(杯子大小,打水概率)

产生打水序列

依据水壶大小,进行切割(就是确定打水人员)

对切割结果进行统计

打印

java实现如下

public class Test {
	
	private int[] container;
	private int length;
	private int members[] = {3,4,5,6};
	private static int sum[] = new int[4];
	
	public Test(int c, int l){
		container = new int[c];
		length = l;
	}


	public static void main(String[] args){
		Test t = new Test(10000000, 60);
		t.init();
		t.statistics();
		t.print();
	}
	
	private void print() {
		for(int s: sum){
			System.out.println(s);
		}
	}

	private void statistics() {
		for(int index=0; index*length < container.length; index++){
			sum[container[index*length]]++;
		}
	}


	public void init(){
		int index = 0;
		while(index < container.length){
			int member = getMember();
			int size = members[member];
			if(index + size < container.length){
				for(int i=0; i < size; i++){
					container[index + i] = member;
				}
				index += size;
			}else{
				for(; index < container.length; index++){
					container[index] = member;
				}
			}
		}
	}

	private int getMember() {
		int x = new Double(57*Math.random()).intValue();
		if(x < 20){
			return 0;
		} else if( x < 35){
			return 1;
		}else if( x < 47){
			return 2;
		}else{
			return 3;
		}
	}
}

其中原始设置如下:

四个人,杯子大小一次容量为3,4,5,6


java类可以直接调节电热水壶的容量,和实验次数


其中,如果试验次数较少,会影响结果


最后给出上述代码运行一次的结果:

41590
41842
41553
41682

(注意:由于其中运用了随机函数,两次的运行结果一般不会一样,但大的差距不会很大。哦,很大概率上,你可以近似理解为永不)


含义为:

杯子容量为3的人给壶注入水的次数为:41590

杯子容量为4的人给壶注入水的次数为:41842

杯子容量为5的人给壶注入水的次数为:41553

杯子容量为6的人给壶注入水的次数为:41682


上述结果我们可以说明,给壶接水的次数或则概率与接水人杯子的大小无关

相关文章
|
SQL 存储 关系型数据库
OceanBase数据库常见问题之部署报错hashtable not init如何解决
OceanBase 是一款由阿里巴巴集团研发的企业级分布式关系型数据库,它具有高可用、高性能、可水平扩展等特点。以下是OceanBase 数据库使用过程中可能遇到的一些常见问题及其解答的汇总,以帮助用户更好地理解和使用这款数据库产品。
|
10月前
|
数据采集 JSON 测试技术
如何在Python中高效实现CSV到JSON的数据转换
在实际项目中,数据格式转换是常见问题,尤其从CSV到JSON的转换。本文深入探讨了多种转换方法,涵盖Python基础实现、数据预处理、错误处理、性能优化及调试验证技巧。通过分块处理、并行处理等手段提升大文件转换效率,并介绍如何封装为命令行工具或Web API,实现自动化批量处理。关键点包括基础实现、数据清洗、异常捕获、性能优化和单元测试,确保转换流程稳定高效。
512 83
|
4月前
|
JSON 供应链 API
深度分析京东工业API接口,用Python脚本实现
京东工业是京东旗下工业供应链服务平台,提供商品查询、库存管理、订单处理等API接口,支持企业高效对接工业采购系统。本文解析其API架构、认证机制及Python调用示例,助力企业集成工业供应链能力。
|
4月前
|
存储 SQL 大数据
告别 Count Distinct 慢查询:StarRocks 高效去重全攻略
在大数据分析中,去重计算(如 Count Distinct)因高计算开销常成为性能瓶颈,尤其在高基数和高并发场景下更为明显。本文以 StarRocks 为分析平台,深入探讨多种去重优化策略,包括使用函数、数据类型转换(如 String 转 Int)、高效数据结构(如 Bitmap 和 HLL),以及物化视图的预计算方案。通过实际案例分析,对比不同方法在性能、精度和易用性方面的优劣,帮助用户在不同业务场景下选择最合适的优化手段。此外,文章还详细解析了如何结合 SQL 查询构建物化视图,以提升去重计算效率,并讨论了精确与近似去重的适用场景。最终目标是为复杂数据分析提供高效、灵活的解决方案。
|
机器学习/深度学习 存储
深入理解SVM中的核函数及其应用
深入理解SVM中的核函数及其应用
734 83
|
10月前
|
存储 人工智能 JavaScript
Harmony OS开发-ArkTS三
本文介绍了ArkTS的基础语法,包括常量、命名规则、数组及其常用函数,以及函数的定义与使用,涵盖匿名函数和箭头函数的区别。通过具体示例,帮助读者快速掌握ArkTS编程技巧,踏上Harmony OS开发之旅。君志所向,一往无前!
608 1
Harmony OS开发-ArkTS三
|
3月前
|
数据采集 缓存 监控
京东商品API技术对接手册(2025版)
本接口文档涵盖基础服务能力、核心接口规范、业务场景实现及开发者注意事项。包括请求性能、数据覆盖、同步机制、认证鉴权、流量控制等内容,适用于商品信息获取、价格监控、库存预警等场景,助力开发者高效对接系统。
|
4月前
|
SQL 数据管理 API
【产品升级】Dataphin V5.2 全新上线:四大能力升级,数据管理更统一、更智能!
Dataphin是阿里巴巴推出的数据建设与治理平台,提供全链路数据服务,助力企业构建标准化数据资产体系。V5.2版本新增“数据资产一站式运营平台”,引入X-数据管家、X-ETL等智能应用,提升数据运营效率。开发平台全面升级,支持多云复杂环境,强化API行级权限管控,保障数据安全。新版还适配国际化多时区场景,助力企业高效协同,释放数据价值。
413 9
|
7月前
|
缓存 前端开发 API
HarmonyOS实战:一招解决等待多个并发结果
本文分享了在开发鸿蒙NEXT版本软件时遇到的并发问题及解决方案。公司为赶在鸿蒙纯血系统上市前发布相关软件,将开发重点放在清除缓存功能上。针对需同时清除四个缓存文件夹的需求,文章分析了官方API 11文档中提供的异步处理方法(如Promise和async/await)的不足,并提出使用Promise.all实现优雅解决方案,避免多层嵌套与代码混乱。通过封装异步任务、构建任务数组及统一处理结果,最终实现高效清除缓存并统计大小的功能。文末呼吁开发者共同参与优化鸿蒙生态。
191 0
|
11月前
|
机器学习/深度学习 人工智能 编解码
Inf-DiT:清华联合智谱AI推出超高分辨率图像生成模型,生成的空间复杂度从 O(N^2) 降低到 O(N)
Inf-DiT 是清华大学与智谱AI联合推出的基于扩散模型的图像上采样方法,能够生成超高分辨率图像,突破传统扩散模型的内存限制,适用于多种实际应用场景。
329 21
Inf-DiT:清华联合智谱AI推出超高分辨率图像生成模型,生成的空间复杂度从 O(N^2) 降低到 O(N)