为了账号安全,请及时绑定邮箱和手机立即绑定

对网易云性格主导色实现与算法的简要分析

昂神盛情相邀,遂有此文

  • 测试过程

    • 简单测试

      • 多次选择固定选项,观察结果,发现存在结果不同的情况
      • 具体的,笔者选择位于屏幕最上方的选项,发现答案可能是橙绿或蓝紫,且蓝紫几率较大
    • 抓包测试

      • 初始化完成后,采用Fiddler进行请求拦截,如下图
        图片描述
      • 发现不需要联网,可以做完全部题目(但图片和音频无法加载,可能是存在懒加载机制),直到获取结果时无法继续
        图片描述
      • 获取结果时,发现两个必须的关键POSTweblogantispam
      • 使用Fiddler解密,可以发现weblog用于握手
        图片描述
      • 使用Fiddler解密,antispam传输未知字符串,但诡异之处在于返回值并不是测试结果
        图片描述
    • Network分析

      • 通过Networkantispam进行分析,如下图所示,既然加密在前端进行,我们就有机会找出被加密前的内容
        图片描述
      • 搜索字符串encSecKey,可以找到下面的JavaScript,并利用Chrome对进行格式化
        图片描述
      • 图片描述
      • 在格式化后的JavaScript中搜索encSecKey,找到下图所示的代码段,对相关代码打断点后刷新
      • 图片描述
      • 通过前端单步调试,可以获取加密前的内容,去除无关内容后,发现传输的只是姓名字符串,如下图所示
      • 图片描述
    • 本机JavaScript分析

      • 由上述内容可知,我们的选择没有被上传,那只可能在本地处理,为此只需要分析全部click事件(也可以从别的角度分析,click事件是笔者选择的切入点)
      • 通过分析可以找到以下JavaScript,格式化后浏览其中的内容可以明显看出端倪,阅读此JavaScript中的代码即可得到测试算法,如下图
      • 图片描述
      • 图片描述
  • 算法解析

    • 算法流程描述如下

      • 第一阶段

        • 每一题的的每个选项打若干颜色标签(使用下面给出的表1),统计前七题对应选项七个标签集的颜色频率和
          • 以第一题选择A为例,第一题A选项的标签是["金", "绿"],如果选择了第一题A选项,那么金绿两个颜色的频率分别加一
          • 这一段的代码如下
  var n, r, o, t = e.length,
                	i = {};
                if (e.slice(0, t - 1).forEach(function(e, t) {
                		return v(i, e, t)
                	}), ...
            -   其中**e**是选项**id**数组,`e.slice(0, t - 1)`实现了对数组除最后一项的拷贝
            -   **v**函数如下所示
         


        function v(t, e, n) {
        	p[n][e - 1].forEach(function(e) {
        		t[e] = t[e] ? t[e] + 1 : 1
        	})
        }
                
            -   这里的**t**是传入的**i**,**i**是一个**dict**,类似**Python**中的**dict**,**CPP**中的**unordered_map**或者**java**中的**HashMap**,实现**key**到**value**的映射,这一段代码的意思是如果存在就加一,不存在就置一
        -   从颜色到频率的映射改为从频率到颜色的映射,如果存在重复,随机保留一个
            -   这一段的代码如下,理解了上一段的话,这一段是比较好理解的
 n = i,
                r = !1,
                o = {},
                Object.keys(n).forEach(function(e) {
                	var t = n[e];
                	o[t] && (r = !0),
                		o[t] = e
                }),
            -   这里没有显式的随机,而是只保留了遍历**dict**时最先遍历的结果
        -   如果没有遇到频率重复,额外更新第八题的频率
            -   这一段的代码如下,这里利用的**短路求值**特性
                
                r && v(i, e[t - 1], t - 1),
                
            -   短路求值是指,A**或**B若A为**真**,不执行B直接返回,A**且**B若A为**假**,不执行B直接返回,接下来的代码中这一性质被多次使用
    -   #### 第二阶段
        
        -   上面的代码全部在一个**if**的条件中,而**if**的条件以下面的代码结束,彼此以逗号连接
            -   这一段的代码如下
                
                2 !== e[7]
                
            -   由**逗号表达式**的性质,逗号表达式的返回值是**最后一个逗号之后的表达式**的返回值,即最终决定执行哪一分支的,是第八题的结果
        -   考虑第八题结果,如果选**A**
            -   遍历下面给出的表**2**,寻找**项内两元素频率和**最大者,将两元素拼接作为结果
                -   表内的项有两个元素,形如`["粉", "金"]`
                -   这一段的代码如下,通过**传入一个函数**定义计算奖励值的方式
 (a = N(m, function(e) {
                    		return i[e[0]] + i[e[1]]
                    	}).join(""))
                -   被调用的**N**函数如下,选择奖励值即项内两元素频率和**最大者**
 function N(e, n) {
                    	var r, o = -1;
                    	return e.forEach(function(e, t) {
                    			e = n(e);
                    			o < e && (o = e,
                    				r = t)
                    		}), e[r]
                    }
            -   如果得到的结果是橙绿,有**0.5**的几率变为蓝紫
                -   这一段的代码如下,实现时依旧使用了**短路求值**和**逗号表达式**的特性
                    
                    return "橙绿" === (a = N(m, function(e) {
                    	return i[e[0]] + i[e[1]]
                    }).join("")) && .5 < Math.random() && (a = "蓝粉"), a;
                    
        -   考虑第八题结果,如果选**B**
            -   遍历下面给出的表**3**,寻找**频率最大**者,将其作为结果
                -   表内的项有一个元素,形如`"绿"`
                -   这一段的代码如下,依旧通过**传入一个函数**定义计算奖励值的方式
                    
                    var a = N(h, function(e) {
                    	return i[e]
                    });
                    
                -   被调用的**N**函数同上,**N**函数设计的精妙之处在于传入一个**函数参数**,这种设计思想在**C**语言的**qsort**和**bsearch**函数中也有使用
            -   如果得到的结果是绿,有**0.5**的几率变为蓝,与上面的内容无本质区别,不再赘述
                -   这一段的代码如下
                    
                    return "绿" === a && .5 < Math.random() && (a = "蓝"), a
                    
    -   算法最终返回一个字符串,作为**dict**的**key**使用(测试的最终结果一共**16**种,已全部附于文后)
-   ### 算法补充分析如下
    
    -   大量使用短路求值/函数参数,命名经过了混淆处理,阅读理解障碍较大
    -   一个比较直观的结果,最后一题选上面的选项,得到双色,否则得到单色
-   ### 给出上文提到的三个表
    
    -   表**1**(截取自上述**JS**,进行了格式化)
 p = [
            	[["金", "绿"], ["紫", "银", "橙"], ["粉", "蓝"]],
            	[["蓝", "紫"], ["粉", "橙"], ["银", "金", "绿"]],
            	[["银", "紫", "橙"], ["蓝", "绿"], ["金", "粉"]],
            	[["银", "橙"], ["紫", "金", "绿"], ["粉", "蓝"]],
            	[["绿", "紫"], ["橙", "粉"], ["银", "金", "蓝"]],
            	[["绿", "紫", "银"], ["蓝", "橙"], ["金", "粉"]],
            	[["绿", "金", "紫"], ["橙", "粉"], ["银", "蓝"]],
            	[["紫", "橙", "绿", "银"], ["蓝", "金", "粉"]]
            ],
    -   表**2**(截取自上述**JS**,进行了格式化)
 m = [
        	["粉", "金"],
        	["金", "橙"],
        	["粉", "紫"],
        	["金", "蓝"],
        	["金", "紫"],
        	["橙", "粉"],
        	["蓝", "粉"],
        	["金", "绿"],
        	["橙", "绿"]
        ],
    -   表**3**(截取自上述**JS**,进行了格式化)
        
        h = ["绿", "橙", "银", "紫", "蓝", "金", "粉"]
        
-   ### 给出实现中的三个关键函数
    
    -   函数**1**(截取自上述**JS**,进行了格式化)
 function v(t, e, n) {
        	p[n][e - 1].forEach(function(e) {
        		t[e] = t[e] ? t[e] + 1 : 1
        	})
        }
    -   函数**2**(截取自上述**JS**,进行了格式化)
 function N(e, n) {
        	var r, o = -1;
        	return e.forEach(function(e, t) {
        			e = n(e);
        			o < e && (o = e,
        				r = t)
        		}), e[r]
        }
    -   函数**3**(截取自上述**JS**,进行了格式化)

 function y(e) {
        	var n, r, o, t = e.length,
        		i = {};
        	if (e.slice(0, t - 1).forEach(function(e, t) {
        			return v(i, e, t)
        		}),
        		n = i,
        		r = !1,
        		o = {},
        		Object.keys(n).forEach(function(e) {
        			var t = n[e];
        			o[t] && (r = !0),
        				o[t] = e
        		}),
        		r && v(i, e[t - 1], t - 1),
        		2 !== e[7])
        		return "橙绿" === (a = N(m, function(e) {
        				return i[e[0]] + i[e[1]]
        			}).join("")) && .5 < Math.random() && (a = "蓝粉"), a;
        	var a = N(h, function(e) {
        		return i[e]
        	});
        	return "绿" === a && .5 < Math.random() && (a = "蓝"), a
        }

-   ### 全部从颜色到完整结果的定义如下
 "蓝": {
    	singleName: "天空蓝",
    	percent: "20.03",
    	peoplecount: 5,
    	otherPeople: "蓝",
    	otherPeopleText: "外在蓝色的人拥有大局观和战略思维!\n你向外界舒适地展示着自我,在规则世界中自在穿行!\n蓝色的人聪明有灵气,总能轻易得到大家的欣赏和支持!",
    	infact: "蓝",
    	infactText: "极端的蓝色,是非常少见的组合!\n你最强大的力量在于感知,洞察和直觉!\n蓝色以其深邃灵魂和智慧,带给自己和他人幸运和奇迹!",
    	oneWord: "魅力超凡的艺术家",
    	attracted: ["橙粉", "粉金"],
    	keepAway: ["金", "银"],
    	songName: "Mia & Sebastian's Theme",
    	songId: "499771852",
    	songUrl: "https://m7.music.126.net/20890607234532/9beabe0be8d76c36101056502612d875/ymusic/obj/w5zDlMODwrDDiGjCn8Ky/9049775496/aed6/ea0d/61ae/9d2b81cd492231c1fc21b2d15a82550a.mp3?infoId=1348305",
    	keywordOther: "冷静、睿智、纵览全局",
    	keywordInfact: "感性、浪漫、以人为本",
    	percentGlobal: "2.47"
    },
    "金": {
    	singleName: "闪耀金",
    	percent: "26.46",
    	peoplecount: 4,
    	otherPeople: "金",
    	otherPeopleText: "外在金色的人,是领导者的代名词。\n在复杂的问题面前,金色总能够迅速掌握全局。\n金色的人永远在努力,永远可靠,永远帮得上忙!",
    	infact: "金",
    	infactText: "极端金色是极具天赋、极其罕见的组合!\n他们有能力让混乱和崩溃的事情重回正轨。\n虽然你处事低调沉稳,但你总是人群中的焦点。",
    	oneWord: "夏日初升的太阳",
    	attracted: ["粉紫", "金橙"],
    	keepAway: ["蓝", "橙粉"],
    	songName: "building a family ",
    	songId: "17239379",
    	songUrl: "https://m8.music.126.net/20890608132050/fa39b280732b262920fe28d3d170562a/ymusic/obj/w5zDlMODwrDDiGjCn8Ky/9060408876/b43b/597d/a3fb/5a44927f5b28e9eed8fc136ead5dbd4e.mp3?infoId=1348308",
    	keywordOther: "领导力、正义、勤奋",
    	keywordInfact: "勇气、无私、责任心",
    	percentGlobal: "3.04"
    },
    "橙": {
    	singleName: "活力橙",
    	percent: "51.86",
    	peoplecount: 2,
    	otherPeople: "橙",
    	otherPeopleText: "外在橙色的人 是高能量的乐观主义者!\n橙色的人天生聪明,有才能,有资源!\n你自带元气,可以在复杂世界里闯荡得游刃有余!",
    	infact: "橙",
    	infactText: "极致橙色的气质是世间少有的!\n行动是橙色的核心,你对想做的事情有无限的驱动力!\n你是个百分百的生活冒险家,也总能获得命运的偏爱!",
    	oneWord: "云隙射下的阳光",
    	attracted: ["金绿", "粉"],
    	keepAway: ["金蓝", "紫"],
    	songName: "warm zephyr",
    	songId: "1486146637",
    	songUrl: "https://m8.music.126.net/20890608132006/fdcf8561e0f1bcf6d4c4ac527e53f8c9/ymusic/obj/w5zDlMODwrDDiGjCn8Ky/9060403238/cde8/ca24/598f/f1775c16109ef477e3008bc5839b8432.mp3?infoId=1345282",
    	keywordOther: "热忱、高能量、有朝气",
    	keywordInfact: "有趣、温暖、幸福",
    	percentGlobal: "4.33"
    },
    "绿": {
    	singleName: "森林绿",
    	percent: "19.89",
    	peoplecount: 5,
    	otherPeople: "绿",
    	otherPeopleText: "外在绿色的人浑身散发着知性的优雅!\n你自在地穿梭在知识的海洋中,有很强的领悟能力!\n绿色善于思考,经常提出惊艳全场的新观点!",
    	infact: "绿",
    	infactText: "极端绿色的人是非常少见的!\n只有极端绿色的人才能在危机中保持清醒,解决问题!\n绿色是最有安全感的颜色,大家都在寻找极端绿色当伙伴!",
    	oneWord: "智慧非凡的开拓者",
    	attracted: ["橙", "蓝粉"],
    	keepAway: ["粉金", "金蓝"],
    	songName: "夏末的心愿",
    	songId: "1492668093",
    	songUrl: "https://m8.music.126.net/20890607234949/f93daf3f1b2749806bb5c7eab39ff188/ymusic/obj/w5zDlMODwrDDiGjCn8Ky/9049868606/e7af/a4bd/c5d6/07bf410d12a5e56f85c7080204f6b6ac.mp3?infoId=1345281",
    	keywordOther: "冷静、独立、有逻辑",
    	keywordInfact: "清醒、舒适、包容",
    	percentGlobal: "3.92"
    },
    "银": {
    	singleName: "太空银",
    	percent: "33.71",
    	peoplecount: 3,
    	otherPeople: "银",
    	otherPeopleText: "外在银色的人,身上有与生俱来的高贵气质!\n你举手投足间优雅大方,自带闪亮光环!\n银色的人品味很高,不断为自己和他人的生活提升质感!",
    	infact: "银",
    	infactText: "极端的银色是极其罕见的!\n你优雅克制的背后,有着很强的洞察和创造力!\n极端银色是宇宙的礼物,你的心中自有星辰与月光!",
    	oneWord: "漫步银河的梦想家",
    	attracted: ["金橙", "橙绿"],
    	keepAway: ["蓝", "橙粉"],
    	songName: "Cornfield Chase",
    	songId: "29734857",
    	songUrl: "https://m7.music.126.net/20890613011419/2780fefd131d4343524bc1eaef0c63d0/ymusic/obj/w5zDlMODwrDDiGjCn8Ky/9123098244/5727/8c94/768c/89ebf9ac9d08ccdeedd7aa1e30b4dadc.mp3?infoId=1348317",
    	keywordOther: "高贵、优雅、有质感",
    	keywordInfact: "洞察、创造力、有天赋",
    	percentGlobal: "4.53"
    },
    "粉": {
    	singleName: "玫瑰粉",
    	percent: "59.26",
    	peoplecount: 2,
    	otherPeople: "粉",
    	otherPeopleText: "外在粉色的人内心纯粹而温暖!\n你简单而敏锐,世间美好都逃不过你的眼睛!\n你用单纯、体贴、无条件的爱,让世界明亮起来!",
    	infact: "粉",
    	infactText: "极端粉色的人群是极其罕见的!\n你纯洁有信念,拥有所有颜色中最神奇的治愈能力!\n其他颜色忙于操纵结果,但奇迹往往发生在极端粉色中!",
    	oneWord: "世间美好收藏家",
    	attracted: ["橙", "金蓝"],
    	keepAway: ["金绿", "金橙"],
    	songName: "和煦的糖果风",
    	songId: "439142564",
    	songUrl: "https://m701.music.126.net/20890607233630/32defc3ba8c28bfdd28d4f01e38fb38d/jdymusic/obj/w5zDlMODwrDDiGjCn8Ky/1528388451/dd07/8dd3/56f7/db1b88989c40393b730277972e7a52bb.mp3?infoId=1346360",
    	keywordOther: "单纯、体贴、温暖",
    	keywordInfact: "纯粹、柔和、治愈",
    	percentGlobal: "2.57"
    },
    "紫": {
    	singleName: "梦幻紫",
    	percent: "31.56",
    	peoplecount: 3,
    	otherPeople: "紫",
    	otherPeopleText: "外在紫色的人气场神秘而梦幻!\n你通常很精致,而且风格多变、难以捉摸!\n紫色的人仿佛被命运偏爱,有着令人嫉妒的艺术天赋!",
    	infact: "紫",
    	infactText: "极端的紫色相当少见! \n你与浪漫的气质撞个满怀,是人群之中最耀眼的存在!\n极端紫色的人从不循规蹈矩,能将创造力发挥到极致!",
    	oneWord: "\n浪漫的神秘主义者\n",
    	attracted: ["粉金", "粉紫"],
    	keepAway: ["橙", "金紫"],
    	songName: "under the stars",
    	songId: "1814213458",
    	songUrl: "https://m8.music.126.net/20890608132145/d7867ed638b6284752022180f3c49ddc/ymusic/obj/w5zDlMODwrDDiGjCn8Ky/9060418519/a288/7f59/86b9/1e2f5b392f4c4286adc6a3e389f33551.mp3?infoId=1346364",
    	keywordOther: "神秘、优雅、耀眼",
    	keywordInfact: "浪漫、克制、梦幻",
    	percentGlobal: "4.14"
    },
    "金蓝": {
    	percent: "22.45",
    	peoplecount: 4,
    	otherPeople: "金",
    	otherPeopleText: "外在的金色百分百努力,是一路前行的奋斗家!\n你有很高的预设目标,以不断突破为行为准则!\n金色的人永远在努力,永远可靠,永远帮得上忙!",
    	infact: "蓝",
    	infactText: "内在蓝色是真正属于智者的灵魂!\n你最强大的力量在于感知,洞察和直觉!\n蓝色以其深邃灵魂和智慧,带给自己和他人幸运和奇迹!",
    	oneWord: "夜空中的璀璨星海",
    	attracted: ["粉", "橙绿"],
    	keepAway: ["橙", "绿"],
    	songName: "Historiette #5",
    	songId: "17239379",
    	songUrl: "https://m7.music.126.net/20890607234038/d14b750c61c06d5054b41a68297c6157/ymusic/obj/w5zDlMODwrDDiGjCn8Ky/9049666252/7646/3696/69cf/32132bbed9479ed9e6a36a224b5fe16f.mp3?infoId=1345279",
    	keywordOther: "领导力、正义、勤奋",
    	keywordInfact: "感性、浪漫、以人为本",
    	percentGlobal: "2.93"
    },
    "金橙": {
    	percent: "37.46",
    	peoplecount: 3,
    	otherPeople: "金",
    	otherPeopleText: "外在金色的人是天生的领导者!\n你总能在危机中保持镇静的头脑,带领大家前进!\n认真威严的金色有时候会有距离感,但责任感超强!",
    	infact: "橙",
    	infactText: "内在橙色的人,专业严肃的背后藏着一颗童心!\n你看起来一丝不苟,内心却燃烧着活力和创新的能量!\n橙色的人具备超乎常人的胆识,是行动力最强的颜色!",
    	oneWord: "黎明闪耀的霞光",
    	attracted: ["银", "金蓝"],
    	keepAway: ["粉", "蓝粉"],
    	songName: "被时光移动的城市",
    	songId: "26524326",
    	songUrl: "https://m7.music.126.net/20890608132321/5c3d9ee60e22560c7c0a498d600e9d7a/ymusic/obj/w5zDlMODwrDDiGjCn8Ky/9060433920/9355/6bba/d452/3ae2d230bd66999b58eb57f4bb36ec98.mp3?infoId=1348309",
    	keywordOther: "领导力、正义、勤奋",
    	keywordInfact: "有趣、温暖、幸福",
    	percentGlobal: "3.92"
    },
    "金绿": {
    	percent: "17.44",
    	peoplecount: 5,
    	otherPeople: "金",
    	otherPeopleText: "外在金色的人,有一点工作狂倾向!\n你能保证规则的顺利运行,是值得信赖的同事和朋友!\n金色的人注重细节,浑身散发着可靠的魅力和高级质感!",
    	infact: "绿",
    	infactText: "内在绿色的人,少年气永不过期!\n你充满热爱且勇于追求理想,纯粹的让人妒忌!\n绿色的人生活既有灵性的深度,又有世俗的成功!",
    	oneWord: "充满远见的哲学家",
    	attracted: ["橙", "金紫"],
    	keepAway: ["粉", "蓝粉"],
    	songName: "leaves in the wind",
    	songId: "19934760",
    	songUrl: "https://m7.music.126.net/20890608131937/385f06b52f6fe09a8a689cc08697e7b1/ymusic/obj/w5zDlMODwrDDiGjCn8Ky/9060397244/54eb/5146/3f5e/4525352be66786c7ed34000a1fa74d14.mp3?infoId=1346362",
    	keywordOther: "领导力、正义、勤奋",
    	keywordInfact: "清醒、舒适、包容",
    	percentGlobal: "2.29"
    },
    "橙粉": {
    	percent: "41.59",
    	peoplecount: 2,
    	otherPeople: "橙",
    	otherPeopleText: "外在橙色的人,是高能量的乐观主义者!\n你能为团队带来惊奇的贡献!是人群中的聚光灯!\n橙色的人被充沛的精力包围,你的无限活力令人惊叹!",
    	infact: "粉",
    	infactText: "内在粉色的人,心思敏感而柔软!\n无限活力的背后,细腻和安静是你对待世界的另一面!\n粉色在体察浪漫上有独家天赋,是最温柔善良的颜色!",
    	oneWord: "海平面初升的阳光",
    	attracted: ["橙绿", "蓝粉"],
    	keepAway: ["金", "银"],
    	songName: "lazy afternoon",
    	songId: "29049489",
    	songUrl: "https://m7.music.126.net/20890607233849/0e96612a759def67fbda27bc1c878eaf/ymusic/obj/w5zDlMODwrDDiGjCn8Ky/2593302435/7a79/7078/2352/2ff263188f0ff4d3e4d4957fcf04e7e8.mp3?infoId=1347334",
    	keywordOther: "热忱、高能量、有朝气",
    	keywordInfact: "纯粹、柔和、治愈",
    	percentGlobal: "3.6"
    },
    "蓝粉": {
    	percent: "59.99",
    	peoplecount: 2,
    	otherPeople: "蓝",
    	otherPeopleText: "外在蓝色的人,注定要扮演引领全局角色!\n你向外界舒适地展示着自我,慷慨地向同伴提供支持!\n蓝色的人眼光长远,总能用实力书写成功和美好!",
    	infact: "粉",
    	infactText: "内在粉色的人,眼睛里充满温柔气息!\n你对待他人和自我都很贴心,容易让人感受到温暖!\n虽然你一路披荆斩棘,但不影响你成为一个仁慈善良的人!",
    	oneWord: "天边透亮的星",
    	attracted: ["绿", "橙粉"],
    	keepAway: ["金橙", "金绿"],
    	songName: "13 jours en France / Piano Solo",
    	songId: "1343379745",
    	songUrl: "https://m8.music.126.net/20890607234458/dec8b682232e1ef6697294f284f82c74/ymusic/obj/w5zDlMODwrDDiGjCn8Ky/9049762452/4932/829f/8e6d/b8779c96f4b25c9b6770627742ae34b4.mp3?infoId=1345280",
    	keywordOther: "冷静、睿智、纵览全局",
    	keywordInfact: "纯粹、柔和、治愈",
    	percentGlobal: "2.56"
    },
    "粉金": {
    	percent: "34.61",
    	peoplecount: 3,
    	otherPeople: "粉",
    	otherPeopleText: "外在粉色的人,举手投足是温柔!\n你善于发现大自然的美好,是浪漫和氛围感的化身!\n粉色的人充满关切,不断向周围人散播着温暖与爱!",
    	infact: "金",
    	infactText: "内在金色的人,是与生俱来的带头人!\n你关注细节与规则,有一点完美主义,努力且高产!\n内在金色的人已臻成熟,内外统整,能成为自己生命主宰!",
    	oneWord: "绚丽夺目的晚霞",
    	attracted: ["蓝", "紫"],
    	keepAway: ["绿", "金紫"],
    	songName: "遇晴",
    	songId: "1495115654",
    	songUrl: "https://m7.music.126.net/20890607234631/8f915cb6203b84305c4e1c6b74b7b355/ymusic/obj/w5zDlMODwrDDiGjCn8Ky/9049794516/7894/7df9/b202/b4f33e7aabe9a00face7dd00b64120f4.mp3?infoId=1348306",
    	keywordOther: "单纯、体贴、温暖",
    	keywordInfact: "勇气、无私、责任心",
    	percentGlobal: "2.43"
    },
    "粉紫": {
    	percent: "51.78",
    	peoplecount: 2,
    	otherPeople: "粉",
    	otherPeopleText: "外在粉色的人善于倾听,浑身散发着治愈的能量!\n你待人诚恳,与你共处的时光让人觉得心旷神怡!\n粉色的人共情力很强,很少有你不能理解的立场和观点!",
    	infact: "紫",
    	infactText: "内在紫色的人,是最神秘难以捉摸的颜色!\n思想深邃的你,最强大的力量在于感知,洞察和直觉!\n紫色的人就是魔法师,往往能实现不可思议的愿望!",
    	oneWord: "神秘温柔的疗愈师",
    	attracted: ["金", "紫"],
    	keepAway: ["橙绿"],
    	songName: "dane street",
    	songId: "2640613",
    	songUrl: "https://m8.music.126.net/20890607234128/62abf412c5eb36f8269df617c3301e11/ymusic/obj/w5zDlMODwrDDiGjCn8Ky/9049683842/19f4/da95/5c5e/b141bc3fa02a0daaec72a0d13f5a0cb8.mp3?infoId=1347335",
    	keywordOther: "单纯、体贴、温暖",
    	keywordInfact: "浪漫、克制、梦幻",
    	percentGlobal: "3.13"
    },
    "橙绿": {
    	percent: "26.57",
    	peoplecount: 4,
    	otherPeople: "橙",
    	otherPeopleText: "外在橙色的人,是高能量的乐观主义者!\n你能为团队带来惊奇的贡献!是人群中的聚光灯!\n橙色的人被充沛的精力包围,你的无限活力令人惊叹!",
    	infact: "绿",
    	infactText: "内在绿色的人拥有真正智者的灵魂,逻辑至上!\n绿色是最机敏聪慧的颜色,热爱思考,有真知灼见!\n你善于解决问题并不断创造新的观点,总是令人振奋!",
    	oneWord: "绚烂而璀璨的极光",
    	attracted: ["金", "银"],
    	keepAway: ["粉紫"],
    	songName: "Belonging",
    	songId: "1823125",
    	songUrl: "https://m7.music.126.net/20890612232945/17fe4c2dd4026c7751ad8ffb95012739/ymusic/obj/w5zDlMODwrDDiGjCn8Ky/9121633586/bc14/de3b/2cc0/7554e49ff87b49b8072afdbb8c526e85.mp3?infoId=1348315",
    	keywordOther: "热忱、高能量、有朝气",
    	keywordInfact: "清醒、舒适、包容",
    	percentGlobal: "2.88"
    },
    "金紫": {
    	percent: "33.67",
    	peoplecount: 3,
    	otherPeople: "金",
    	otherPeopleText: "金色是所有颜色中最值得信赖的!\n你有着奢侈品般的高标准,自己就是自己的品牌!\n金色的人认真可靠,拜托你的事情可以安心等待好消息!",
    	infact: "紫",
    	infactText: "内在紫色的人,拥有浑然天成的洞察力和浪漫基因!\n你仿佛被命运偏爱,有着令人嫉妒的艺术天赋!\n紫色的人就是魔法师,总能实现不可思议的愿望!",
    	oneWord: "流光溢彩的钻石",
    	attracted: ["绿", "金绿"],
    	keepAway: ["紫", "粉金"],
    	songName: "バラのように咲く",
    	songId: "1992713",
    	songUrl: "https://m8.music.126.net/20890612230932/946e18167dcba479846d54a134d4901e/ymusic/obj/w5zDlMODwrDDiGjCn8Ky/9121399218/5fc6/bbc9/9a7c/152d0243d164515b75f0a28709086b5c.mp3?infoId=1346372",
    	keywordOther: "领导力、正义、勤奋",
    	keywordInfact: "浪漫、克制、梦幻",
    	percentGlobal: "4.26"
    }
  • 结语

    • 如下图,大师不愧是大师,构造的算法凭借精妙的随机让一般人叹为观止,事实上,随机是算法中重要的一环

    • 图片描述

    • 我想,这位大师一定非常喜欢Treap吧,把FHQ Treap奉为信仰的我和这位大师也算是心有灵犀呢

    • 最后,让我们心怀敬仰的写出如下代码,结束本文

      std::mt19937 generator(0x114514);+

点击查看更多内容
1人点赞

若觉得本文不错,就分享一下吧!

评论

作者其他优质文章

正在加载中
Web前端工程师
手记
粉丝
14
获赞与收藏
46

关注作者,订阅最新文章

阅读免费教程

感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦
今天注册有机会得

100积分直接送

付费专栏免费学

大额优惠券免费领

立即参与 放弃机会
意见反馈 帮助中心 APP下载
官方微信

举报

0/150
提交
取消