如何面对这个残酷的世界?——Java模拟
1,问题引入:
房间里有100个人,每人都有100元钱,他们在玩一个游戏。每轮游戏中,每个人都要拿出一元钱随机给另一个人,最后这100个人的财富分布是怎样的?
2,问题思考:
今天有幸看到这道题目,起初没有任何想法,于是打算采用计算机模拟的解决,模拟出的结果大出乎我意料,引发了我对人生的思考。
我们不妨把这场游戏视作社会财富分配的简化模型,从而模拟这个世界的运行规律。我们假设:每个人都在同一起跑线上,初始财富都相同,姑且就是100元。而“每天拿出一元钱给别人”可理解为基本的日常消费,这已经是再正常不过的社会生活了。我们来模拟若干时间之后,社会的财富分配,是趋向于平衡,还是形成了贫富差距。
3,说明:
1,本次模拟方法为纯计算机随机模拟,关于本题的所蕴含的数学原理作者尚未明晰,有兴趣的读者欢迎在评论区探讨。
2,本次计算机模拟采用的编程语言是Java,版本为JDK1.8,采用的开发工具为IntelliJ IDEA 2018.2.4 x64,程序运行的操作系统是64 位的Windows 10系统 。
3,关于本次模拟采用的框架是基于java swing 进行二次封装的图形化框架,考虑到本文的很大部分读者都不是从事于计算机的专业人员,加之本文主要也是对社会财富分配的思考。因此,本文尽可能的少涉及代码的编写和展示,如果需要该模板和程序源码的读者,可以在评论区留下联系方式。
4,问题求解:
4.1 财富分配开始时每个人的财富数量(如下图所示)
图中每个钜形就代表一个人,其高度代表金钱数量,由于现在是游戏尚未开始时刻,每个玩家的财富数量相同,都为100,故现在每个矩形的高度都为100。
4.2 财富分配开始后每个人的财富数量变化情况(如下图所示)
从图中可以看到,在这随机分钱的操作中,每个玩家财富值的变动是极为剧烈的,并且形成了贫富差距,且距离越来越大。为了方便描述整个社会财富的分配状况,我们按照财富值的增加一个排序算法、,等到的社会财富分布如下图。
从图中可以看出,初始时所有人的财富值相等,随着游戏的进行,财富值差距越来越大,财富的分配接近于幂律分布。最后,社会将有很少的富人和很多的穷人。让程序循环10000次,可以大致看出:
最富有的人的财富值约为初始财富的3.5倍。
top10%的富人掌握着大约30%的财富,top20%的富人掌握着大约50%的财富;60%的人的财富将缩水到100元以下。
大部分人的钱跑进了少部分人的口袋里。即使在最公平的规则下,世界依然展现出了残酷的一面。
4.3 如果允许借贷,世界的财富分布又将如何?
允许借债会让世界变得好一点吗?
在现实社会中,情境会更复杂一些。比如说,当我们没钱了,还可以找亲友、找银行、找投资人借债,说不定哪天就东山再起了呢。在允许借债的情况下,游戏结果如下图所示(排序后结果):
同样,我们让程序循环10000次,可以大致得到下述结论(红色表示负债):
游戏结束时,最富有的人的财富值约为初始财富的4倍。
top10%的富人掌握着大约33%的财富,top20%的富人掌握着大约56%的财富;大约25%的人背负着债务,最高负债约为200元。
实验表明,借债虽然能让我们在走投无路时多一些周转余地,但最终会让穷人变得更穷。
4.4 面对这个残酷的世界,努力真的有用吗?
努力的人生会更好吗?
我们中的绝大多数人,并没有一飞冲天的发财运气,想要改变命运,我们只能选择自己更努力,去争取更好的生活。
我们假设每个玩家的初始财富仍然为100元,但有10人比别人加倍努力,从而获得了1%的竞争优势,即赢得收益的概率比别人高出1%,模拟结果如何呢?
(说明:上图中的绿色柱子为更努力的玩家)
可以看到,社会财富的总体分布形态没有什么变化。但是,这10位努力的玩家都没有亏本,其中有8人都远高于初始财富,甚至有一人挤进了财富榜的top10。
实验表明,尽管努力的玩家不一定都是成功的一个,但是努力的人大都混的还不错。感谢这个残酷世界还给我们留下一条生路。
5,结论
1,在这随机分钱的游戏中,最后的结果是形成了贫富差距,且差距越来越大。最终,形成了较少富人,较多穷人的社会财富格局。我们大多数人可能都没有这么好的运气,但还是要怀有梦想,万一这概率就是你呢?
2,结合社会现状,每个人的初始财富应不尽相同。俗话说的好,条条大路通罗马,但有的人出身就在罗马。在相同起点上,贫富差距越来越大,而那些初始财富远高于起点的富人和远低于起点的穷人,岂不是穷人越穷,富人越富,屌丝越难成功逆袭富二代。
3,在允许借贷的情况下,社会的财富分布并没用显著变化,但社会的贫富差距却越来越大,富人越富,穷人越穷,最终穷人负债累累,达到远还不起的程度。联系现实社会,各种借贷平台,校园贷平台,虽在一定程度上短时间内解决了你的问题,但是最终却是让你负债更多。
4,这个世界如此残酷,不过天无绝人之路。从模拟情况可得:尽管努力的玩家不一定都是成功的一个,但是努力的人大都混的还不错。因此,就是想要平凡的生活,我们也需要努力,才不会被社会淘汰。
如何面对这个残酷的世界?——Java模拟的更多相关文章
- java模拟post请求发送json
java模拟post请求发送json,用两种方式实现,第一种是HttpURLConnection发送post请求,第二种是使用httpclient模拟post请求, 方法一: package main ...
- java 模拟qq源码
java 模拟qq源码: http://files.cnblogs.com/files/hujunzheng/QQ--hjzgg.zip
- java模拟开锁
java模拟开锁 service qq:928900200 Introduction to Computer Science II: CSCI142Fall 2014Lab #1Instructor: ...
- Jsoup实现java模拟登陆
Jsoup实现java模拟登陆 2013-10-29 14:52:05| 分类: web开发|举报|字号 订阅 下载LOFTER我的照片书 | 1:如何获取cookies. 1.1 ...
- [Java] 模拟HTTP的Get和Post请求
在之前,写了篇Java模拟HTTP的Get和Post请求的文章,这篇文章起源与和一个朋友砍飞信诈骗网站的问题,于是动用了Apache的comments-net包,也实现了get和post的http请求 ...
- Java模拟登录系统抓取内容【转载】
没有看考勤的习惯,导致我的一天班白上了,都是钱啊,系统也不发个邮件通知下.... 为了避免以后还有类似状况特别写了个java模拟登录抓取考勤内容的方法(部分代码来自网络),希望有人修改后也可以 ...
- Java模拟登陆02【转载】
在使用java访问URL时,如果该URL需要身份验证,那么就不能够直接访问,因为没有登陆.那么,如何解决这个问题呢? 方法是使用java模拟登陆,登陆后记录下cookie信息,在下次发起请求时 ...
- java模拟浏览器包selenium整合了htmlunit,火狐浏览器,IE浏览器,opare浏览器驱
//如果网页源码中有些内容是js渲染过来的,那你通过HttpClient直接取肯定取不到,但是这些数据一般都是通过异步请求传过来的(一般都是通过ajax的get或者post方式).那么你可以通过火狐浏 ...
- 上curl java 模拟http请求
最近,我的项目要求java模拟http请求,获得dns解决 tcp处理过的信息特定的连接. java api提供urlConnection apache提供的httpClient都不能胜任该需求,二次 ...
随机推荐
- 线段树优化建图 || CF786B Legacy
题面:786B - Legacy 代码: #include<cstdio> #include<cstring> #include<iostream> #includ ...
- 第03课:GDB常用的调试命令概览
先给出一个常用命令的列表,后面结合具体的例子详细介绍每个命令的用法. 命令名称 命令缩写 命令说明 run r 运行一个程序 continue c 让暂停的程序继续运行 next n 运行到下 ...
- 【bzoj2300】【Luogu P2521】 [HAOI2011]防线修建 动态凸包,平衡树,Set
一句话题意:给你一个凸包,每次可以插入一个点或者询问周长. 动态凸包裸题嘛,用\(Set\)实现.最初每个点坐标做乘三处理,便于取初始三角形的重心作为凸包判定原点. #include <bits ...
- 【洛谷P3338】力
题目大意:求 \[ E_{j}=\sum_{i<j} \frac{q_{i}}{(i-j)^{2}}-\sum_{i>j} \frac{q_{i}}{(i-j)^{2}} \] 题解:可以 ...
- sourceTree 添加 ssh key 方法
1.使用 git 客户的生成公私钥:id_rsa.id_rsa.pub 1.1设置Git的user name和email: $ git config --global user.name " ...
- springMVC项目访问URL链接时遇到某一段然后忽略后面的部分
背景:一个链接URL:http:localhost/tq/asf/218732,配置URL使遇到/asf后直接跳转不识别/asf后面的218732 因为是在ssm框架下做的项目,所以用spring的注 ...
- null转为数字的坑
在项目中,需要用到某个字段等于0时来处理逻辑 if (+item.ext === 0) {} // 前面的+号是转为数字 // 如果item.ext 为 null时, +item.ext 就等于 0 ...
- 怎样将shp文件的坐标点导出来?
方法一: 1.将线矢量转化为点矢量 具体操作步骤如下: (1)arctoolbox\Data Management tools\Features\双击Feature Vertices to point ...
- 8.django单独执行文件
import os import django # 导入django os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'noju.settings')d ...
- 12. ClustrixDB 为容错和可用性分配磁盘空间
集群必须包含足够的空闲磁盘空间,以便从节点或区域故障中自动恢复.要计算在发生故障后仍然允许ClustrixDB完全重新保护数据的情况下可以使用的最大磁盘空间量,可以使用以下公式: 最大磁盘利用率% = ...