模擬社會孩子能力(jquery外还运用了echarts和ecstat两个js制作图表)

这个测试也是纯前端的一个页面,前面还写过一个武侠末世的无聊小游戏,但是没往下继续写
这测试看到结果的我感觉触目惊心
真的太真实了
power是原有财富,knowledge是学历
加权后真的很符合现实世界的统计
所以好好学习吧!

       <script type="text/javascript" src="https://cdn.jsdelivr.net/npm/echarts/dist/echarts.min.js"></script>
       <script type="text/javascript" src="https://cdn.jsdelivr.net/npm/echarts-stat/dist/ecStat.min.js"></script>
       <script type="text/javascript" src="https://cdn.jsdelivr.net/npm/echarts-gl/dist/echarts-gl.min.js"></script>
       <script type="text/javascript" src="https://cdn.jsdelivr.net/npm/echarts/dist/extension/dataTool.min.js"></script>
       <script type="text/javascript" src="https://cdn.jsdelivr.net/npm/echarts/map/js/china.js"></script>
       <script type="text/javascript" src="https://cdn.jsdelivr.net/npm/echarts/map/js/world.js"></script>
       <script type="text/javascript" src="https://api.map.baidu.com/api?v=2.0&ak=xfhhaTThl11qYVrqLZii6w8qE5ggnhrY&__ec_v__=20190126"></script>
       <script type="text/javascript" src="https://cdn.jsdelivr.net/npm/echarts/dist/extension/bmap.min.js"></script>
<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8">
		<title></title>
		<style type="text/css">
			body {
				font-size: 10px;
			}

			#title {
				text-align: center;
				position: sticky;
				top: 0;
				background-color: #F2F2F2;
				/* border: 2px solid #4CAF50; */
			}
		</style>
	</head>
	<body>
		<div id="title">
			<h1>模擬社會</h1>
			<button type="button" id="continueButton">生成人物</button>
			<button type="button" id="continueButton2">人物匹配</button>
			<button type="button" id="continueButton3">生成圖</button>
			<br />
			<br />
		</div>
		<div id="container" style="height: 500px"></div>
		<div id="log"></div>
	</body>
	<script src="jquery-3.4.1.min.js" type="text/javascript" charset="utf-8"></script>
	<script src="js/echarts.min.js" type="text/javascript" charset="utf-8"></script>
	<script src="js/ecStat.min.js" type="text/javascript" charset="utf-8"></script>
	<script type="text/javascript">
		function newMan() {
			var knowledge = Math.floor(Math.random() * 10 + 1);
			var power = Math.floor(Math.random() * 10 + 1);
			var man = new Object();
			man.knowledge = knowledge;
			man.power = power;
			return man;
		}

		function newWoman() {
			var knowledge = Math.floor(Math.random() * 10 + 1);
			var power = Math.floor(Math.random() * 10 + 1);
			var woman = new Object();
			woman.knowledge = knowledge;
			woman.power = power;
			return woman;
		}
		var num = 10000;
		var menArray = new Array();
		var womenArray = new Array();
		var countChildren = 0;
		var childrenArray = new Array();
		$("#continueButton").click(function() {
			for (var i = 0; i < num; i++) {
				menArray[i] = newMan();
				womenArray[i] = newWoman();
				// $("#log").append("男" + i + "號,學識:" + menArray[i].knowledge + " 能力:" + menArray[i].power + "</br>");
				// $("#log").append("女" + i + "號,學識:" + womenArray[i].knowledge + " 能力:" + womenArray[i].power + "</br>");
			}
		})
		$("#continueButton2").click(function() {
			for (var i = 0; i < num; i++) {
				for (var j = 0; j < num; j++) {
					if (menArray[i] != null && womenArray[j] != null) {
						// var kabs = Math.abs(menArray[i].knowledge - womenArray[j].knowledge);
						// var pabs = Math.abs(menArray[i].power - womenArray[j].power);
						
						//社會資源低於4的男性,低於3的女性沒有後代 學識低於3的男性,低於2的女性沒有後代
						if(menArray[i].knowledge<3 && menArray[i].power<4){
							$("#log").append("男" + i + "號,學識:" + menArray[i].knowledge + " 能力:" + menArray[i].power + " 被淘汰 </br>");
							menArray[i] = null;
							continue;
							
						}
						if(womenArray[j].knowledge<2 && womenArray[j].power<3){
							$("#log").append("女" + j + "號,學識:" + womenArray[j].knowledge + " 能力:" + womenArray[j].power + " 被淘汰 </br>");
							womenArray[j] = null;
							continue;
						}
						
						//模擬女性只會找比自己強或者和自己實力相當的男性
						var kabs = menArray[i].knowledge - womenArray[j].knowledge;
						var pabs = menArray[i].power - womenArray[j].power;
						if (kabs < 2 && kabs >= 0 && pabs >= 0 && pabs < 2) {
							var children = new Object();
							children.father = menArray[i];
							children.mother = womenArray[j];
							children.knowledge = Math.round((children.father.knowledge + children.mother.knowledge) / 2);
							children.power = Math.round((children.father.power + children.mother.power) / 2);
							childrenArray[countChildren] = children;
							$("#log").append("男" + i + "號,學識:" + menArray[i].knowledge + " 能力:" + menArray[i].power + " 牽手 ");
							$("#log").append("女" + j + "號,學識:" + womenArray[j].knowledge + " 能力:" + womenArray[j].power + " 孩子 ");
							$("#log").append("孩子" + countChildren + "號學識:" + children.knowledge + " 能力:" + children.power + "</br>");
							menArray[i] = null;
							womenArray[j] = null;
							countChildren++;
						}
					}
				}
			}

			for (var i = 0; i < num; i++) {
				if (menArray[i] != null) {
					$("#log").append("剩男" + i + "號,學識:" + menArray[i].knowledge + " 能力:" + menArray[i].power + "</br>");
				}
				if (womenArray[i] != null) {
					$("#log").append("剩女" + i + "號,學識:" + womenArray[i].knowledge + " 能力:" + womenArray[i].power + "</br>");
				}
			}
		})

		$("#continueButton3").click(function() {
			var dom = document.getElementById("container");
			var myChart = echarts.init(dom);
			var app = {};
			option = null;
			
			var data = new Array();
			for (var i = 0; i < countChildren; i++) {
				var temp = new Array();
				temp[0] = i;
				//加權進行能力判定
				temp[1] = childrenArray[i].knowledge*childrenArray[i].knowledge+childrenArray[i].power*5;
				data[i] = temp;
			}
			

			// See https://github.com/ecomfe/echarts-stat
			var myRegression = ecStat.regression('exponential', data);

			myRegression.points.sort(function(a, b) {
				return a[0] - b[0];
			});

			option = {
				title: {
					text: '2018-2019 people relationship',
					subtext: 'By gyx.test',
					// sublink: 'https://github.com/ecomfe/echarts-stat',
					left: 'center'
				},
				tooltip: {
					trigger: 'axis',
					axisPointer: {
						type: 'cross'
					}
				},
				xAxis: {
					type: 'value',
					splitLine: {
						lineStyle: {
							type: 'dashed'
						}
					},
					splitNumber: 20
				},
				yAxis: {
					type: 'value',
					splitLine: {
						lineStyle: {
							type: 'dashed'
						}
					}
				},
				series: [{
					name: 'scatter',
					type: 'scatter',
					label: {
						emphasis: {
							show: true,
							position: 'left',
							textStyle: {
								color: 'blue',
								fontSize: 16
							}
						}
					},
					data: data
				}, {
					name: 'line',
					type: 'line',
					showSymbol: false,
					smooth: true,
					data: myRegression.points,
					markPoint: {
						itemStyle: {
							normal: {
								color: 'transparent'
							}
						},
						label: {
							normal: {
								show: true,
								position: 'left',
								formatter: myRegression.expression,
								textStyle: {
									color: '#333',
									fontSize: 14
								}
							}
						},
						data: [{
							coord: myRegression.points[myRegression.points.length - 1]
						}]
					}
				}]
			};
			if (option && typeof option === "object") {
				myChart.setOption(option, true);
			}

		})
	</script>
</html>

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值