[{"data":1,"prerenderedAt":3232},["ShallowReactive",2],{"content:\u002F2022\u002Fweight-random":3,"surround:\u002F2022\u002Fweight-random":3221},{"id":4,"title":5,"body":6,"categories":3195,"date":3197,"description":3198,"draft":3199,"extension":3200,"image":3201,"meta":3202,"navigation":3204,"path":3205,"permalink":3206,"published":3206,"readingTime":3207,"recommend":3212,"references":3206,"seo":3213,"sitemap":3214,"stem":3215,"tags":3216,"type":3219,"updated":3206,"__hash__":3220},"content\u002Fposts\u002F2022\u002Fweight-random.md","为什么抽不到 SSR，原来是这段代码在作祟",{"type":7,"value":8,"toc":3179},"minimark",[9,13,17,20,1111,1114,1119,1122,1125,1128,1139,1143,1146,1149,1155,1159,1162,1165,1171,1175,1178,1181,1187,1190,1196,1201,1785,1790,1795,2370,2375,2380,2955,2958,2962,2965,3090,3096,3100,3103,3106,3113,3116,3122,3125,3131,3134,3140,3146,3150,3153,3156,3162,3165,3168,3171],[10,11,12],"h2",{"id":12},"前言",[14,15,16],"p",{},"在游戏开发的过程中，很多场景都会用到加权随机。例如游戏中的抽奖，我们有 50% 的几率获得金币、40% 的几率获得钻石、9% 的几率获得普通装备，1% 的几率获得极品装备。",[14,18,19],{},"什么是加权随机？当我们从某种容器中随机选择一个元素，每个元素被选中的机会并不相等，而是由相对“权重”（或概率）被选中的，也就是说我们想要有“偏心”的得到某种随机结果。举一个例子，假如现在有一个权重数组 w = {1, 2, 4, 8}，它们代表如下规则。",[21,22,23,339,596,854],"ul",{},[24,25,26,338],"li",{},[27,28,31,101],"span",{"className":29},[30],"katex",[27,32,35],{"className":33},[34],"katex-mathml",[36,37,39],"math",{"xmlns":38},"http:\u002F\u002Fwww.w3.org\u002F1998\u002FMath\u002FMathML",[40,41,42,96],"semantics",{},[43,44,45,80,83,90,93],"mrow",{},[46,47,48,52],"mfrac",{},[49,50,51],"mn",{},"1",[43,53,54,59,61,64,67,69,72,74,77],{},[55,56,58],"mo",{"stretchy":57},"false","(",[49,60,51],{},[55,62,63],{},"+",[49,65,66],{},"2",[55,68,63],{},[49,70,71],{},"4",[55,73,63],{},[49,75,76],{},"8",[55,78,79],{"stretchy":57},")",[55,81,82],{},"=",[46,84,85,87],{},[49,86,51],{},[49,88,89],{},"15",[55,91,92],{},"≈",[49,94,95],{},"6.6",[97,98,100],"annotation",{"encoding":99},"application\u002Fx-tex","\\frac{1}{(1+2+4+8)} = \\frac{1}{15} \\approx 6.6",[27,102,106,243,328],{"className":103,"ariaHidden":105},[104],"katex-html","true",[27,107,110,115,231,236,240],{"className":108},[109],"base",[27,111],{"className":112,"style":114},[113],"strut","height:1.3651em;vertical-align:-0.52em;",[27,116,119,124,228],{"className":117},[118],"mord",[27,120],{"className":121},[122,123],"mopen","nulldelimiter",[27,125,127],{"className":126},[46],[27,128,132,219],{"className":129},[130,131],"vlist-t","vlist-t2",[27,133,136,214],{"className":134},[135],"vlist-r",[27,137,141,188,199],{"className":138,"style":140},[139],"vlist","height:0.8451em;",[27,142,144,149],{"style":143},"top:-2.655em;",[27,145],{"className":146,"style":148},[147],"pstrut","height:3em;",[27,150,156],{"className":151},[152,153,154,155],"sizing","reset-size6","size3","mtight",[27,157,159,162,165,169,172,175,178,181,184],{"className":158},[118,155],[27,160,58],{"className":161},[122,155],[27,163,51],{"className":164},[118,155],[27,166,63],{"className":167},[168,155],"mbin",[27,170,66],{"className":171},[118,155],[27,173,63],{"className":174},[168,155],[27,176,71],{"className":177},[118,155],[27,179,63],{"className":180},[168,155],[27,182,76],{"className":183},[118,155],[27,185,79],{"className":186},[187,155],"mclose",[27,189,191,194],{"style":190},"top:-3.23em;",[27,192],{"className":193,"style":148},[147],[27,195],{"className":196,"style":198},[197],"frac-line","border-bottom-width:0.04em;",[27,200,202,205],{"style":201},"top:-3.394em;",[27,203],{"className":204,"style":148},[147],[27,206,208],{"className":207},[152,153,154,155],[27,209,211],{"className":210},[118,155],[27,212,51],{"className":213},[118,155],[27,215,218],{"className":216},[217],"vlist-s","​",[27,220,222],{"className":221},[135],[27,223,226],{"className":224,"style":225},[139],"height:0.52em;",[27,227],{},[27,229],{"className":230},[187,123],[27,232],{"className":233,"style":235},[234],"mspace","margin-right:0.2778em;",[27,237,82],{"className":238},[239],"mrel",[27,241],{"className":242,"style":235},[234],[27,244,246,250,319,322,325],{"className":245},[109],[27,247],{"className":248,"style":249},[113],"height:1.1901em;vertical-align:-0.345em;",[27,251,253,256,316],{"className":252},[118],[27,254],{"className":255},[122,123],[27,257,259],{"className":258},[46],[27,260,262,307],{"className":261},[130,131],[27,263,265,304],{"className":264},[135],[27,266,268,282,290],{"className":267,"style":140},[139],[27,269,270,273],{"style":143},[27,271],{"className":272,"style":148},[147],[27,274,276],{"className":275},[152,153,154,155],[27,277,279],{"className":278},[118,155],[27,280,89],{"className":281},[118,155],[27,283,284,287],{"style":190},[27,285],{"className":286,"style":148},[147],[27,288],{"className":289,"style":198},[197],[27,291,292,295],{"style":201},[27,293],{"className":294,"style":148},[147],[27,296,298],{"className":297},[152,153,154,155],[27,299,301],{"className":300},[118,155],[27,302,51],{"className":303},[118,155],[27,305,218],{"className":306},[217],[27,308,310],{"className":309},[135],[27,311,314],{"className":312,"style":313},[139],"height:0.345em;",[27,315],{},[27,317],{"className":318},[187,123],[27,320],{"className":321,"style":235},[234],[27,323,92],{"className":324},[239],[27,326],{"className":327,"style":235},[234],[27,329,331,335],{"className":330},[109],[27,332],{"className":333,"style":334},[113],"height:0.6444em;",[27,336,95],{"className":337},[118]," % 的机会选中索引 0",[24,340,341,595],{},[27,342,344,393],{"className":343},[30],[27,345,347],{"className":346},[34],[36,348,349],{"xmlns":38},[40,350,351,390],{},[43,352,353,377,379,385,387],{},[46,354,355,357],{},[49,356,66],{},[43,358,359,361,363,365,367,369,371,373,375],{},[55,360,58],{"stretchy":57},[49,362,51],{},[55,364,63],{},[49,366,66],{},[55,368,63],{},[49,370,71],{},[55,372,63],{},[49,374,76],{},[55,376,79],{"stretchy":57},[55,378,82],{},[46,380,381,383],{},[49,382,66],{},[49,384,89],{},[55,386,92],{},[49,388,389],{},"13.3",[97,391,392],{"encoding":99},"\\frac{2}{(1+2+4+8)} = \\frac{2}{15} \\approx 13.3",[27,394,396,503,586],{"className":395,"ariaHidden":105},[104],[27,397,399,402,494,497,500],{"className":398},[109],[27,400],{"className":401,"style":114},[113],[27,403,405,408,491],{"className":404},[118],[27,406],{"className":407},[122,123],[27,409,411],{"className":410},[46],[27,412,414,483],{"className":413},[130,131],[27,415,417,480],{"className":416},[135],[27,418,420,458,466],{"className":419,"style":140},[139],[27,421,422,425],{"style":143},[27,423],{"className":424,"style":148},[147],[27,426,428],{"className":427},[152,153,154,155],[27,429,431,434,437,440,443,446,449,452,455],{"className":430},[118,155],[27,432,58],{"className":433},[122,155],[27,435,51],{"className":436},[118,155],[27,438,63],{"className":439},[168,155],[27,441,66],{"className":442},[118,155],[27,444,63],{"className":445},[168,155],[27,447,71],{"className":448},[118,155],[27,450,63],{"className":451},[168,155],[27,453,76],{"className":454},[118,155],[27,456,79],{"className":457},[187,155],[27,459,460,463],{"style":190},[27,461],{"className":462,"style":148},[147],[27,464],{"className":465,"style":198},[197],[27,467,468,471],{"style":201},[27,469],{"className":470,"style":148},[147],[27,472,474],{"className":473},[152,153,154,155],[27,475,477],{"className":476},[118,155],[27,478,66],{"className":479},[118,155],[27,481,218],{"className":482},[217],[27,484,486],{"className":485},[135],[27,487,489],{"className":488,"style":225},[139],[27,490],{},[27,492],{"className":493},[187,123],[27,495],{"className":496,"style":235},[234],[27,498,82],{"className":499},[239],[27,501],{"className":502,"style":235},[234],[27,504,506,509,577,580,583],{"className":505},[109],[27,507],{"className":508,"style":249},[113],[27,510,512,515,574],{"className":511},[118],[27,513],{"className":514},[122,123],[27,516,518],{"className":517},[46],[27,519,521,566],{"className":520},[130,131],[27,522,524,563],{"className":523},[135],[27,525,527,541,549],{"className":526,"style":140},[139],[27,528,529,532],{"style":143},[27,530],{"className":531,"style":148},[147],[27,533,535],{"className":534},[152,153,154,155],[27,536,538],{"className":537},[118,155],[27,539,89],{"className":540},[118,155],[27,542,543,546],{"style":190},[27,544],{"className":545,"style":148},[147],[27,547],{"className":548,"style":198},[197],[27,550,551,554],{"style":201},[27,552],{"className":553,"style":148},[147],[27,555,557],{"className":556},[152,153,154,155],[27,558,560],{"className":559},[118,155],[27,561,66],{"className":562},[118,155],[27,564,218],{"className":565},[217],[27,567,569],{"className":568},[135],[27,570,572],{"className":571,"style":313},[139],[27,573],{},[27,575],{"className":576},[187,123],[27,578],{"className":579,"style":235},[234],[27,581,92],{"className":582},[239],[27,584],{"className":585,"style":235},[234],[27,587,589,592],{"className":588},[109],[27,590],{"className":591,"style":334},[113],[27,593,389],{"className":594},[118]," % 的机会选中索引 1",[24,597,598,853],{},[27,599,601,651],{"className":600},[30],[27,602,604],{"className":603},[34],[36,605,606],{"xmlns":38},[40,607,608,648],{},[43,609,610,635,637,643,645],{},[46,611,612,615],{},[49,613,614],{},"3",[43,616,617,619,621,623,625,627,629,631,633],{},[55,618,58],{"stretchy":57},[49,620,51],{},[55,622,63],{},[49,624,66],{},[55,626,63],{},[49,628,71],{},[55,630,63],{},[49,632,76],{},[55,634,79],{"stretchy":57},[55,636,82],{},[46,638,639,641],{},[49,640,71],{},[49,642,89],{},[55,644,92],{},[49,646,647],{},"26.6",[97,649,650],{"encoding":99},"\\frac{3}{(1+2+4+8)} = \\frac{4}{15} \\approx 26.6",[27,652,654,761,844],{"className":653,"ariaHidden":105},[104],[27,655,657,660,752,755,758],{"className":656},[109],[27,658],{"className":659,"style":114},[113],[27,661,663,666,749],{"className":662},[118],[27,664],{"className":665},[122,123],[27,667,669],{"className":668},[46],[27,670,672,741],{"className":671},[130,131],[27,673,675,738],{"className":674},[135],[27,676,678,716,724],{"className":677,"style":140},[139],[27,679,680,683],{"style":143},[27,681],{"className":682,"style":148},[147],[27,684,686],{"className":685},[152,153,154,155],[27,687,689,692,695,698,701,704,707,710,713],{"className":688},[118,155],[27,690,58],{"className":691},[122,155],[27,693,51],{"className":694},[118,155],[27,696,63],{"className":697},[168,155],[27,699,66],{"className":700},[118,155],[27,702,63],{"className":703},[168,155],[27,705,71],{"className":706},[118,155],[27,708,63],{"className":709},[168,155],[27,711,76],{"className":712},[118,155],[27,714,79],{"className":715},[187,155],[27,717,718,721],{"style":190},[27,719],{"className":720,"style":148},[147],[27,722],{"className":723,"style":198},[197],[27,725,726,729],{"style":201},[27,727],{"className":728,"style":148},[147],[27,730,732],{"className":731},[152,153,154,155],[27,733,735],{"className":734},[118,155],[27,736,614],{"className":737},[118,155],[27,739,218],{"className":740},[217],[27,742,744],{"className":743},[135],[27,745,747],{"className":746,"style":225},[139],[27,748],{},[27,750],{"className":751},[187,123],[27,753],{"className":754,"style":235},[234],[27,756,82],{"className":757},[239],[27,759],{"className":760,"style":235},[234],[27,762,764,767,835,838,841],{"className":763},[109],[27,765],{"className":766,"style":249},[113],[27,768,770,773,832],{"className":769},[118],[27,771],{"className":772},[122,123],[27,774,776],{"className":775},[46],[27,777,779,824],{"className":778},[130,131],[27,780,782,821],{"className":781},[135],[27,783,785,799,807],{"className":784,"style":140},[139],[27,786,787,790],{"style":143},[27,788],{"className":789,"style":148},[147],[27,791,793],{"className":792},[152,153,154,155],[27,794,796],{"className":795},[118,155],[27,797,89],{"className":798},[118,155],[27,800,801,804],{"style":190},[27,802],{"className":803,"style":148},[147],[27,805],{"className":806,"style":198},[197],[27,808,809,812],{"style":201},[27,810],{"className":811,"style":148},[147],[27,813,815],{"className":814},[152,153,154,155],[27,816,818],{"className":817},[118,155],[27,819,71],{"className":820},[118,155],[27,822,218],{"className":823},[217],[27,825,827],{"className":826},[135],[27,828,830],{"className":829,"style":313},[139],[27,831],{},[27,833],{"className":834},[187,123],[27,836],{"className":837,"style":235},[234],[27,839,92],{"className":840},[239],[27,842],{"className":843,"style":235},[234],[27,845,847,850],{"className":846},[109],[27,848],{"className":849,"style":334},[113],[27,851,647],{"className":852},[118]," % 的机会选中索引 2",[24,855,856,1110],{},[27,857,859,908],{"className":858},[30],[27,860,862],{"className":861},[34],[36,863,864],{"xmlns":38},[40,865,866,905],{},[43,867,868,892,894,900,902],{},[46,869,870,872],{},[49,871,76],{},[43,873,874,876,878,880,882,884,886,888,890],{},[55,875,58],{"stretchy":57},[49,877,51],{},[55,879,63],{},[49,881,66],{},[55,883,63],{},[49,885,71],{},[55,887,63],{},[49,889,76],{},[55,891,79],{"stretchy":57},[55,893,82],{},[46,895,896,898],{},[49,897,76],{},[49,899,89],{},[55,901,92],{},[49,903,904],{},"53.3",[97,906,907],{"encoding":99},"\\frac{8}{(1+2+4+8)} = \\frac{8}{15} \\approx 53.3",[27,909,911,1018,1101],{"className":910,"ariaHidden":105},[104],[27,912,914,917,1009,1012,1015],{"className":913},[109],[27,915],{"className":916,"style":114},[113],[27,918,920,923,1006],{"className":919},[118],[27,921],{"className":922},[122,123],[27,924,926],{"className":925},[46],[27,927,929,998],{"className":928},[130,131],[27,930,932,995],{"className":931},[135],[27,933,935,973,981],{"className":934,"style":140},[139],[27,936,937,940],{"style":143},[27,938],{"className":939,"style":148},[147],[27,941,943],{"className":942},[152,153,154,155],[27,944,946,949,952,955,958,961,964,967,970],{"className":945},[118,155],[27,947,58],{"className":948},[122,155],[27,950,51],{"className":951},[118,155],[27,953,63],{"className":954},[168,155],[27,956,66],{"className":957},[118,155],[27,959,63],{"className":960},[168,155],[27,962,71],{"className":963},[118,155],[27,965,63],{"className":966},[168,155],[27,968,76],{"className":969},[118,155],[27,971,79],{"className":972},[187,155],[27,974,975,978],{"style":190},[27,976],{"className":977,"style":148},[147],[27,979],{"className":980,"style":198},[197],[27,982,983,986],{"style":201},[27,984],{"className":985,"style":148},[147],[27,987,989],{"className":988},[152,153,154,155],[27,990,992],{"className":991},[118,155],[27,993,76],{"className":994},[118,155],[27,996,218],{"className":997},[217],[27,999,1001],{"className":1000},[135],[27,1002,1004],{"className":1003,"style":225},[139],[27,1005],{},[27,1007],{"className":1008},[187,123],[27,1010],{"className":1011,"style":235},[234],[27,1013,82],{"className":1014},[239],[27,1016],{"className":1017,"style":235},[234],[27,1019,1021,1024,1092,1095,1098],{"className":1020},[109],[27,1022],{"className":1023,"style":249},[113],[27,1025,1027,1030,1089],{"className":1026},[118],[27,1028],{"className":1029},[122,123],[27,1031,1033],{"className":1032},[46],[27,1034,1036,1081],{"className":1035},[130,131],[27,1037,1039,1078],{"className":1038},[135],[27,1040,1042,1056,1064],{"className":1041,"style":140},[139],[27,1043,1044,1047],{"style":143},[27,1045],{"className":1046,"style":148},[147],[27,1048,1050],{"className":1049},[152,153,154,155],[27,1051,1053],{"className":1052},[118,155],[27,1054,89],{"className":1055},[118,155],[27,1057,1058,1061],{"style":190},[27,1059],{"className":1060,"style":148},[147],[27,1062],{"className":1063,"style":198},[197],[27,1065,1066,1069],{"style":201},[27,1067],{"className":1068,"style":148},[147],[27,1070,1072],{"className":1071},[152,153,154,155],[27,1073,1075],{"className":1074},[118,155],[27,1076,76],{"className":1077},[118,155],[27,1079,218],{"className":1080},[217],[27,1082,1084],{"className":1083},[135],[27,1085,1087],{"className":1086,"style":313},[139],[27,1088],{},[27,1090],{"className":1091},[187,123],[27,1093],{"className":1094,"style":235},[234],[27,1096,92],{"className":1097},[239],[27,1099],{"className":1100,"style":235},[234],[27,1102,1104,1107],{"className":1103},[109],[27,1105],{"className":1106,"style":334},[113],[27,1108,904],{"className":1109},[118]," % 的机会选中索引 3",[10,1112,1113],{"id":1113},"解决方案",[1115,1116,1118],"h3",{"id":1117},"方案一笨笨的办法","方案一、笨笨的办法",[14,1120,1121],{},"第一个方法是在我们的候选列表中，包含了基于权重的每个索引的预期数量，然后从该列表中随机选择。",[14,1123,1124],{},"假设现在有权重列表 {1, 2, 4, 8}，那我们得到的候选列表将是 {0, 1, 1, 2, 2, 2, 2, 3, 3, 3, 3, 3, 3, 3, 3}。",[14,1126,1127],{},"然后通过 rand.Intn() ，获取一个随机数，就完成了，代码如下。",[1129,1130,1136],"pre",{"className":1131,"code":1133,"language":1134,"meta":1135},[1132],"language-go","func weightedRandomS1(weights []int) int {\n\tif len(weights) == 0 {\n\t\treturn 0\n\t}\n\n\tvar indexList []int\n\n\tfor i, weight := range weights {\n\t\tcnt := 0\n\t\tfor weight > cnt {\n\t\t\tindexList = append(indexList, i)\n\t\t\tcnt++\n\t\t}\n\t}\n\n\trand.Seed(time.Now().UnixNano())\n\treturn indexList[rand.Intn(len(indexList))]\n}\n","go","",[1137,1138,1133],"code",{"__ignoreMap":1135},[1115,1140,1142],{"id":1141},"方案二略显聪明","方案二、略显聪明",[14,1144,1145],{},"使用方案一，当权重特别大的时候，这种方案显然效率不高，会浪费很多时间来生成列表，并占用太多的内存。",[14,1147,1148],{},"方案一中的列表不是必须的，方案二避免生成大的列表。由于总权重为 15（1+2+4+8），我们可以生成一个 [0,15) 的随机整数，然后根据这个数字返回索引。代码如下。",[1129,1150,1153],{"className":1151,"code":1152,"language":1134,"meta":1135},[1132],"func weightedRandomS2() int {\n\trand.Seed(time.Now().UnixNano())\n\tr := rand.Intn(15)\n\tif r \u003C= 1 {\n\t\treturn 0\n\t} else if 1 \u003C r && r \u003C= 3 {\n\t\treturn 1\n\t} else if 3 \u003C r && r \u003C= 7 {\n\t\treturn 2\n\t} else {\n\t\treturn 3\n\t}\n}\n",[1137,1154,1152],{"__ignoreMap":1135},[1115,1156,1158],{"id":1157},"方案三神之一手","方案三、神之一手",[14,1160,1161],{},"方案二避免了方案一中的生成列表，因此效率更高了。但是我们必须写很多的 if else 代码，这看起来太难看了，为了避免编写过多的 if else 代码，衍生出了方案三。",[14,1163,1164],{},"不必将 r 与所有的范围进行比较。我们可以依次减去总权重，任何时候结果小于等于零，我们就可以返回它。这种方法可以叫做放弃临时名单。",[1129,1166,1169],{"className":1167,"code":1168,"language":1134,"meta":1135},[1132],"func weightedRandomS3(weights []int) int {\n\trand.Seed(time.Now().UnixNano())\n\tr := rand.Intn(15)\n\tfor i, v := range weights {\n\t\tr = r - v\n\t\tif r \u003C= 0 {\n\t\t\treturn i\n\t\t}\n\t}\n\treturn len(weights) - 1\n}\n",[1137,1170,1168],{"__ignoreMap":1135},[1115,1172,1174],{"id":1173},"方案四小小优化","方案四、小小优化",[14,1176,1177],{},"对于方案三，r 小于等于 0 的速度越快，我们的算法就越高效。那么我们如何让 r 到达 0 更快呢？",[14,1179,1180],{},"直观感受上，如果 r 减去最大的权重，就会更快到达 0 ，所以在运行 weightedRandom 前，我们可以对 weights 按照权重从大到小排序。",[1129,1182,1185],{"className":1183,"code":1184,"language":1134,"meta":1135},[1132],"func weightedRandomS4(weights []int) int {\n\tsort.Sort(sort.Reverse(sort.IntSlice(weights)))\n\trand.Seed(time.Now().UnixNano())\n\tr := rand.Intn(15)\n\tfor i, v := range weights {\n\t\tr = r - v\n\t\tif r \u003C= 0 {\n\t\t\treturn i\n\t\t}\n\t}\n\treturn len(weights) - 1\n}\n",[1137,1186,1184],{"__ignoreMap":1135},[14,1188,1189],{},"可以通过数学期望来证明我们的想法。",[14,1191,1192],{},[1193,1194,1195],"strong",{},"最佳顺序",[14,1197,1198],{},[1137,1199,1200],{"code":1200},"{8, 4, 2, 1}",[14,1202,1203],{},[27,1204,1206,1281],{"className":1205},[30],[27,1207,1209],{"className":1208},[34],[36,1210,1211],{"xmlns":38},[40,1212,1213,1278],{},[43,1214,1215,1219,1221,1227,1230,1232,1234,1240,1242,1244,1246,1252,1254,1256,1258,1264,1266,1268,1270],{},[1216,1217,1218],"mi",{},"E",[55,1220,82],{},[46,1222,1223,1225],{},[49,1224,76],{},[49,1226,89],{},[55,1228,1229],{},"∗",[49,1231,51],{},[55,1233,63],{},[46,1235,1236,1238],{},[49,1237,71],{},[49,1239,89],{},[55,1241,1229],{},[49,1243,66],{},[55,1245,63],{},[46,1247,1248,1250],{},[49,1249,66],{},[49,1251,89],{},[55,1253,1229],{},[49,1255,614],{},[55,1257,63],{},[46,1259,1260,1262],{},[49,1261,51],{},[49,1263,89],{},[55,1265,1229],{},[49,1267,71],{},[55,1269,82],{},[46,1271,1272,1275],{},[49,1273,1274],{},"16",[49,1276,1277],{},"10",[97,1279,1280],{"encoding":99},"E = \\frac{8}{15}*1 + \\frac{4}{15}*2 + \\frac{2}{15}*3 + \\frac{1}{15}*4 = \\frac{16}{10}",[27,1282,1284,1305,1389,1408,1491,1509,1592,1610,1693,1711],{"className":1283,"ariaHidden":105},[104],[27,1285,1287,1291,1296,1299,1302],{"className":1286},[109],[27,1288],{"className":1289,"style":1290},[113],"height:0.6833em;",[27,1292,1218],{"className":1293,"style":1295},[118,1294],"mathnormal","margin-right:0.0576em;",[27,1297],{"className":1298,"style":235},[234],[27,1300,82],{"className":1301},[239],[27,1303],{"className":1304,"style":235},[234],[27,1306,1308,1311,1379,1383,1386],{"className":1307},[109],[27,1309],{"className":1310,"style":249},[113],[27,1312,1314,1317,1376],{"className":1313},[118],[27,1315],{"className":1316},[122,123],[27,1318,1320],{"className":1319},[46],[27,1321,1323,1368],{"className":1322},[130,131],[27,1324,1326,1365],{"className":1325},[135],[27,1327,1329,1343,1351],{"className":1328,"style":140},[139],[27,1330,1331,1334],{"style":143},[27,1332],{"className":1333,"style":148},[147],[27,1335,1337],{"className":1336},[152,153,154,155],[27,1338,1340],{"className":1339},[118,155],[27,1341,89],{"className":1342},[118,155],[27,1344,1345,1348],{"style":190},[27,1346],{"className":1347,"style":148},[147],[27,1349],{"className":1350,"style":198},[197],[27,1352,1353,1356],{"style":201},[27,1354],{"className":1355,"style":148},[147],[27,1357,1359],{"className":1358},[152,153,154,155],[27,1360,1362],{"className":1361},[118,155],[27,1363,76],{"className":1364},[118,155],[27,1366,218],{"className":1367},[217],[27,1369,1371],{"className":1370},[135],[27,1372,1374],{"className":1373,"style":313},[139],[27,1375],{},[27,1377],{"className":1378},[187,123],[27,1380],{"className":1381,"style":1382},[234],"margin-right:0.2222em;",[27,1384,1229],{"className":1385},[168],[27,1387],{"className":1388,"style":1382},[234],[27,1390,1392,1396,1399,1402,1405],{"className":1391},[109],[27,1393],{"className":1394,"style":1395},[113],"height:0.7278em;vertical-align:-0.0833em;",[27,1397,51],{"className":1398},[118],[27,1400],{"className":1401,"style":1382},[234],[27,1403,63],{"className":1404},[168],[27,1406],{"className":1407,"style":1382},[234],[27,1409,1411,1414,1482,1485,1488],{"className":1410},[109],[27,1412],{"className":1413,"style":249},[113],[27,1415,1417,1420,1479],{"className":1416},[118],[27,1418],{"className":1419},[122,123],[27,1421,1423],{"className":1422},[46],[27,1424,1426,1471],{"className":1425},[130,131],[27,1427,1429,1468],{"className":1428},[135],[27,1430,1432,1446,1454],{"className":1431,"style":140},[139],[27,1433,1434,1437],{"style":143},[27,1435],{"className":1436,"style":148},[147],[27,1438,1440],{"className":1439},[152,153,154,155],[27,1441,1443],{"className":1442},[118,155],[27,1444,89],{"className":1445},[118,155],[27,1447,1448,1451],{"style":190},[27,1449],{"className":1450,"style":148},[147],[27,1452],{"className":1453,"style":198},[197],[27,1455,1456,1459],{"style":201},[27,1457],{"className":1458,"style":148},[147],[27,1460,1462],{"className":1461},[152,153,154,155],[27,1463,1465],{"className":1464},[118,155],[27,1466,71],{"className":1467},[118,155],[27,1469,218],{"className":1470},[217],[27,1472,1474],{"className":1473},[135],[27,1475,1477],{"className":1476,"style":313},[139],[27,1478],{},[27,1480],{"className":1481},[187,123],[27,1483],{"className":1484,"style":1382},[234],[27,1486,1229],{"className":1487},[168],[27,1489],{"className":1490,"style":1382},[234],[27,1492,1494,1497,1500,1503,1506],{"className":1493},[109],[27,1495],{"className":1496,"style":1395},[113],[27,1498,66],{"className":1499},[118],[27,1501],{"className":1502,"style":1382},[234],[27,1504,63],{"className":1505},[168],[27,1507],{"className":1508,"style":1382},[234],[27,1510,1512,1515,1583,1586,1589],{"className":1511},[109],[27,1513],{"className":1514,"style":249},[113],[27,1516,1518,1521,1580],{"className":1517},[118],[27,1519],{"className":1520},[122,123],[27,1522,1524],{"className":1523},[46],[27,1525,1527,1572],{"className":1526},[130,131],[27,1528,1530,1569],{"className":1529},[135],[27,1531,1533,1547,1555],{"className":1532,"style":140},[139],[27,1534,1535,1538],{"style":143},[27,1536],{"className":1537,"style":148},[147],[27,1539,1541],{"className":1540},[152,153,154,155],[27,1542,1544],{"className":1543},[118,155],[27,1545,89],{"className":1546},[118,155],[27,1548,1549,1552],{"style":190},[27,1550],{"className":1551,"style":148},[147],[27,1553],{"className":1554,"style":198},[197],[27,1556,1557,1560],{"style":201},[27,1558],{"className":1559,"style":148},[147],[27,1561,1563],{"className":1562},[152,153,154,155],[27,1564,1566],{"className":1565},[118,155],[27,1567,66],{"className":1568},[118,155],[27,1570,218],{"className":1571},[217],[27,1573,1575],{"className":1574},[135],[27,1576,1578],{"className":1577,"style":313},[139],[27,1579],{},[27,1581],{"className":1582},[187,123],[27,1584],{"className":1585,"style":1382},[234],[27,1587,1229],{"className":1588},[168],[27,1590],{"className":1591,"style":1382},[234],[27,1593,1595,1598,1601,1604,1607],{"className":1594},[109],[27,1596],{"className":1597,"style":1395},[113],[27,1599,614],{"className":1600},[118],[27,1602],{"className":1603,"style":1382},[234],[27,1605,63],{"className":1606},[168],[27,1608],{"className":1609,"style":1382},[234],[27,1611,1613,1616,1684,1687,1690],{"className":1612},[109],[27,1614],{"className":1615,"style":249},[113],[27,1617,1619,1622,1681],{"className":1618},[118],[27,1620],{"className":1621},[122,123],[27,1623,1625],{"className":1624},[46],[27,1626,1628,1673],{"className":1627},[130,131],[27,1629,1631,1670],{"className":1630},[135],[27,1632,1634,1648,1656],{"className":1633,"style":140},[139],[27,1635,1636,1639],{"style":143},[27,1637],{"className":1638,"style":148},[147],[27,1640,1642],{"className":1641},[152,153,154,155],[27,1643,1645],{"className":1644},[118,155],[27,1646,89],{"className":1647},[118,155],[27,1649,1650,1653],{"style":190},[27,1651],{"className":1652,"style":148},[147],[27,1654],{"className":1655,"style":198},[197],[27,1657,1658,1661],{"style":201},[27,1659],{"className":1660,"style":148},[147],[27,1662,1664],{"className":1663},[152,153,154,155],[27,1665,1667],{"className":1666},[118,155],[27,1668,51],{"className":1669},[118,155],[27,1671,218],{"className":1672},[217],[27,1674,1676],{"className":1675},[135],[27,1677,1679],{"className":1678,"style":313},[139],[27,1680],{},[27,1682],{"className":1683},[187,123],[27,1685],{"className":1686,"style":1382},[234],[27,1688,1229],{"className":1689},[168],[27,1691],{"className":1692,"style":1382},[234],[27,1694,1696,1699,1702,1705,1708],{"className":1695},[109],[27,1697],{"className":1698,"style":334},[113],[27,1700,71],{"className":1701},[118],[27,1703],{"className":1704,"style":235},[234],[27,1706,82],{"className":1707},[239],[27,1709],{"className":1710,"style":235},[234],[27,1712,1714,1717],{"className":1713},[109],[27,1715],{"className":1716,"style":249},[113],[27,1718,1720,1723,1782],{"className":1719},[118],[27,1721],{"className":1722},[122,123],[27,1724,1726],{"className":1725},[46],[27,1727,1729,1774],{"className":1728},[130,131],[27,1730,1732,1771],{"className":1731},[135],[27,1733,1735,1749,1757],{"className":1734,"style":140},[139],[27,1736,1737,1740],{"style":143},[27,1738],{"className":1739,"style":148},[147],[27,1741,1743],{"className":1742},[152,153,154,155],[27,1744,1746],{"className":1745},[118,155],[27,1747,1277],{"className":1748},[118,155],[27,1750,1751,1754],{"style":190},[27,1752],{"className":1753,"style":148},[147],[27,1755],{"className":1756,"style":198},[197],[27,1758,1759,1762],{"style":201},[27,1760],{"className":1761,"style":148},[147],[27,1763,1765],{"className":1764},[152,153,154,155],[27,1766,1768],{"className":1767},[118,155],[27,1769,1274],{"className":1770},[118,155],[27,1772,218],{"className":1773},[217],[27,1775,1777],{"className":1776},[135],[27,1778,1780],{"className":1779,"style":313},[139],[27,1781],{},[27,1783],{"className":1784},[187,123],[14,1786,1787],{},[1193,1788,1789],{},"相对最佳顺序，较差的顺序",[14,1791,1792],{},[1137,1793,1794],{"code":1794},"{2, 4, 8, 1}",[14,1796,1797],{},[27,1798,1800,1871],{"className":1799},[30],[27,1801,1803],{"className":1802},[34],[36,1804,1805],{"xmlns":38},[40,1806,1807,1868],{},[43,1808,1809,1811,1813,1819,1821,1823,1825,1831,1833,1835,1837,1843,1845,1847,1849,1855,1857,1859,1861],{},[1216,1810,1218],{},[55,1812,82],{},[46,1814,1815,1817],{},[49,1816,66],{},[49,1818,89],{},[55,1820,1229],{},[49,1822,51],{},[55,1824,63],{},[46,1826,1827,1829],{},[49,1828,71],{},[49,1830,89],{},[55,1832,1229],{},[49,1834,66],{},[55,1836,63],{},[46,1838,1839,1841],{},[49,1840,76],{},[49,1842,89],{},[55,1844,1229],{},[49,1846,614],{},[55,1848,63],{},[46,1850,1851,1853],{},[49,1852,51],{},[49,1854,89],{},[55,1856,1229],{},[49,1858,71],{},[55,1860,82],{},[46,1862,1863,1866],{},[49,1864,1865],{},"24",[49,1867,1277],{},[97,1869,1870],{"encoding":99},"E = \\frac{2}{15}*1 + \\frac{4}{15}*2 + \\frac{8}{15}*3 + \\frac{1}{15}*4 = \\frac{24}{10}",[27,1872,1874,1892,1975,1993,2076,2094,2177,2195,2278,2296],{"className":1873,"ariaHidden":105},[104],[27,1875,1877,1880,1883,1886,1889],{"className":1876},[109],[27,1878],{"className":1879,"style":1290},[113],[27,1881,1218],{"className":1882,"style":1295},[118,1294],[27,1884],{"className":1885,"style":235},[234],[27,1887,82],{"className":1888},[239],[27,1890],{"className":1891,"style":235},[234],[27,1893,1895,1898,1966,1969,1972],{"className":1894},[109],[27,1896],{"className":1897,"style":249},[113],[27,1899,1901,1904,1963],{"className":1900},[118],[27,1902],{"className":1903},[122,123],[27,1905,1907],{"className":1906},[46],[27,1908,1910,1955],{"className":1909},[130,131],[27,1911,1913,1952],{"className":1912},[135],[27,1914,1916,1930,1938],{"className":1915,"style":140},[139],[27,1917,1918,1921],{"style":143},[27,1919],{"className":1920,"style":148},[147],[27,1922,1924],{"className":1923},[152,153,154,155],[27,1925,1927],{"className":1926},[118,155],[27,1928,89],{"className":1929},[118,155],[27,1931,1932,1935],{"style":190},[27,1933],{"className":1934,"style":148},[147],[27,1936],{"className":1937,"style":198},[197],[27,1939,1940,1943],{"style":201},[27,1941],{"className":1942,"style":148},[147],[27,1944,1946],{"className":1945},[152,153,154,155],[27,1947,1949],{"className":1948},[118,155],[27,1950,66],{"className":1951},[118,155],[27,1953,218],{"className":1954},[217],[27,1956,1958],{"className":1957},[135],[27,1959,1961],{"className":1960,"style":313},[139],[27,1962],{},[27,1964],{"className":1965},[187,123],[27,1967],{"className":1968,"style":1382},[234],[27,1970,1229],{"className":1971},[168],[27,1973],{"className":1974,"style":1382},[234],[27,1976,1978,1981,1984,1987,1990],{"className":1977},[109],[27,1979],{"className":1980,"style":1395},[113],[27,1982,51],{"className":1983},[118],[27,1985],{"className":1986,"style":1382},[234],[27,1988,63],{"className":1989},[168],[27,1991],{"className":1992,"style":1382},[234],[27,1994,1996,1999,2067,2070,2073],{"className":1995},[109],[27,1997],{"className":1998,"style":249},[113],[27,2000,2002,2005,2064],{"className":2001},[118],[27,2003],{"className":2004},[122,123],[27,2006,2008],{"className":2007},[46],[27,2009,2011,2056],{"className":2010},[130,131],[27,2012,2014,2053],{"className":2013},[135],[27,2015,2017,2031,2039],{"className":2016,"style":140},[139],[27,2018,2019,2022],{"style":143},[27,2020],{"className":2021,"style":148},[147],[27,2023,2025],{"className":2024},[152,153,154,155],[27,2026,2028],{"className":2027},[118,155],[27,2029,89],{"className":2030},[118,155],[27,2032,2033,2036],{"style":190},[27,2034],{"className":2035,"style":148},[147],[27,2037],{"className":2038,"style":198},[197],[27,2040,2041,2044],{"style":201},[27,2042],{"className":2043,"style":148},[147],[27,2045,2047],{"className":2046},[152,153,154,155],[27,2048,2050],{"className":2049},[118,155],[27,2051,71],{"className":2052},[118,155],[27,2054,218],{"className":2055},[217],[27,2057,2059],{"className":2058},[135],[27,2060,2062],{"className":2061,"style":313},[139],[27,2063],{},[27,2065],{"className":2066},[187,123],[27,2068],{"className":2069,"style":1382},[234],[27,2071,1229],{"className":2072},[168],[27,2074],{"className":2075,"style":1382},[234],[27,2077,2079,2082,2085,2088,2091],{"className":2078},[109],[27,2080],{"className":2081,"style":1395},[113],[27,2083,66],{"className":2084},[118],[27,2086],{"className":2087,"style":1382},[234],[27,2089,63],{"className":2090},[168],[27,2092],{"className":2093,"style":1382},[234],[27,2095,2097,2100,2168,2171,2174],{"className":2096},[109],[27,2098],{"className":2099,"style":249},[113],[27,2101,2103,2106,2165],{"className":2102},[118],[27,2104],{"className":2105},[122,123],[27,2107,2109],{"className":2108},[46],[27,2110,2112,2157],{"className":2111},[130,131],[27,2113,2115,2154],{"className":2114},[135],[27,2116,2118,2132,2140],{"className":2117,"style":140},[139],[27,2119,2120,2123],{"style":143},[27,2121],{"className":2122,"style":148},[147],[27,2124,2126],{"className":2125},[152,153,154,155],[27,2127,2129],{"className":2128},[118,155],[27,2130,89],{"className":2131},[118,155],[27,2133,2134,2137],{"style":190},[27,2135],{"className":2136,"style":148},[147],[27,2138],{"className":2139,"style":198},[197],[27,2141,2142,2145],{"style":201},[27,2143],{"className":2144,"style":148},[147],[27,2146,2148],{"className":2147},[152,153,154,155],[27,2149,2151],{"className":2150},[118,155],[27,2152,76],{"className":2153},[118,155],[27,2155,218],{"className":2156},[217],[27,2158,2160],{"className":2159},[135],[27,2161,2163],{"className":2162,"style":313},[139],[27,2164],{},[27,2166],{"className":2167},[187,123],[27,2169],{"className":2170,"style":1382},[234],[27,2172,1229],{"className":2173},[168],[27,2175],{"className":2176,"style":1382},[234],[27,2178,2180,2183,2186,2189,2192],{"className":2179},[109],[27,2181],{"className":2182,"style":1395},[113],[27,2184,614],{"className":2185},[118],[27,2187],{"className":2188,"style":1382},[234],[27,2190,63],{"className":2191},[168],[27,2193],{"className":2194,"style":1382},[234],[27,2196,2198,2201,2269,2272,2275],{"className":2197},[109],[27,2199],{"className":2200,"style":249},[113],[27,2202,2204,2207,2266],{"className":2203},[118],[27,2205],{"className":2206},[122,123],[27,2208,2210],{"className":2209},[46],[27,2211,2213,2258],{"className":2212},[130,131],[27,2214,2216,2255],{"className":2215},[135],[27,2217,2219,2233,2241],{"className":2218,"style":140},[139],[27,2220,2221,2224],{"style":143},[27,2222],{"className":2223,"style":148},[147],[27,2225,2227],{"className":2226},[152,153,154,155],[27,2228,2230],{"className":2229},[118,155],[27,2231,89],{"className":2232},[118,155],[27,2234,2235,2238],{"style":190},[27,2236],{"className":2237,"style":148},[147],[27,2239],{"className":2240,"style":198},[197],[27,2242,2243,2246],{"style":201},[27,2244],{"className":2245,"style":148},[147],[27,2247,2249],{"className":2248},[152,153,154,155],[27,2250,2252],{"className":2251},[118,155],[27,2253,51],{"className":2254},[118,155],[27,2256,218],{"className":2257},[217],[27,2259,2261],{"className":2260},[135],[27,2262,2264],{"className":2263,"style":313},[139],[27,2265],{},[27,2267],{"className":2268},[187,123],[27,2270],{"className":2271,"style":1382},[234],[27,2273,1229],{"className":2274},[168],[27,2276],{"className":2277,"style":1382},[234],[27,2279,2281,2284,2287,2290,2293],{"className":2280},[109],[27,2282],{"className":2283,"style":334},[113],[27,2285,71],{"className":2286},[118],[27,2288],{"className":2289,"style":235},[234],[27,2291,82],{"className":2292},[239],[27,2294],{"className":2295,"style":235},[234],[27,2297,2299,2302],{"className":2298},[109],[27,2300],{"className":2301,"style":249},[113],[27,2303,2305,2308,2367],{"className":2304},[118],[27,2306],{"className":2307},[122,123],[27,2309,2311],{"className":2310},[46],[27,2312,2314,2359],{"className":2313},[130,131],[27,2315,2317,2356],{"className":2316},[135],[27,2318,2320,2334,2342],{"className":2319,"style":140},[139],[27,2321,2322,2325],{"style":143},[27,2323],{"className":2324,"style":148},[147],[27,2326,2328],{"className":2327},[152,153,154,155],[27,2329,2331],{"className":2330},[118,155],[27,2332,1277],{"className":2333},[118,155],[27,2335,2336,2339],{"style":190},[27,2337],{"className":2338,"style":148},[147],[27,2340],{"className":2341,"style":198},[197],[27,2343,2344,2347],{"style":201},[27,2345],{"className":2346,"style":148},[147],[27,2348,2350],{"className":2349},[152,153,154,155],[27,2351,2353],{"className":2352},[118,155],[27,2354,1865],{"className":2355},[118,155],[27,2357,218],{"className":2358},[217],[27,2360,2362],{"className":2361},[135],[27,2363,2365],{"className":2364,"style":313},[139],[27,2366],{},[27,2368],{"className":2369},[187,123],[14,2371,2372],{},[1193,2373,2374],{},"最差的顺序",[14,2376,2377],{},[1137,2378,2379],{"code":2379},"{1, 2, 4, 8}",[14,2381,2382],{},[27,2383,2385,2456],{"className":2384},[30],[27,2386,2388],{"className":2387},[34],[36,2389,2390],{"xmlns":38},[40,2391,2392,2453],{},[43,2393,2394,2396,2398,2404,2406,2408,2410,2416,2418,2420,2422,2428,2430,2432,2434,2440,2442,2444,2446],{},[1216,2395,1218],{},[55,2397,82],{},[46,2399,2400,2402],{},[49,2401,51],{},[49,2403,89],{},[55,2405,1229],{},[49,2407,51],{},[55,2409,63],{},[46,2411,2412,2414],{},[49,2413,66],{},[49,2415,89],{},[55,2417,1229],{},[49,2419,66],{},[55,2421,63],{},[46,2423,2424,2426],{},[49,2425,71],{},[49,2427,89],{},[55,2429,1229],{},[49,2431,614],{},[55,2433,63],{},[46,2435,2436,2438],{},[49,2437,76],{},[49,2439,89],{},[55,2441,1229],{},[49,2443,71],{},[55,2445,82],{},[46,2447,2448,2451],{},[49,2449,2450],{},"32",[49,2452,1277],{},[97,2454,2455],{"encoding":99},"E = \\frac{1}{15} *1 + \\frac{2}{15}*2 + \\frac{4}{15}*3 + \\frac{8}{15}*4 = \\frac{32}{10}",[27,2457,2459,2477,2560,2578,2661,2679,2762,2780,2863,2881],{"className":2458,"ariaHidden":105},[104],[27,2460,2462,2465,2468,2471,2474],{"className":2461},[109],[27,2463],{"className":2464,"style":1290},[113],[27,2466,1218],{"className":2467,"style":1295},[118,1294],[27,2469],{"className":2470,"style":235},[234],[27,2472,82],{"className":2473},[239],[27,2475],{"className":2476,"style":235},[234],[27,2478,2480,2483,2551,2554,2557],{"className":2479},[109],[27,2481],{"className":2482,"style":249},[113],[27,2484,2486,2489,2548],{"className":2485},[118],[27,2487],{"className":2488},[122,123],[27,2490,2492],{"className":2491},[46],[27,2493,2495,2540],{"className":2494},[130,131],[27,2496,2498,2537],{"className":2497},[135],[27,2499,2501,2515,2523],{"className":2500,"style":140},[139],[27,2502,2503,2506],{"style":143},[27,2504],{"className":2505,"style":148},[147],[27,2507,2509],{"className":2508},[152,153,154,155],[27,2510,2512],{"className":2511},[118,155],[27,2513,89],{"className":2514},[118,155],[27,2516,2517,2520],{"style":190},[27,2518],{"className":2519,"style":148},[147],[27,2521],{"className":2522,"style":198},[197],[27,2524,2525,2528],{"style":201},[27,2526],{"className":2527,"style":148},[147],[27,2529,2531],{"className":2530},[152,153,154,155],[27,2532,2534],{"className":2533},[118,155],[27,2535,51],{"className":2536},[118,155],[27,2538,218],{"className":2539},[217],[27,2541,2543],{"className":2542},[135],[27,2544,2546],{"className":2545,"style":313},[139],[27,2547],{},[27,2549],{"className":2550},[187,123],[27,2552],{"className":2553,"style":1382},[234],[27,2555,1229],{"className":2556},[168],[27,2558],{"className":2559,"style":1382},[234],[27,2561,2563,2566,2569,2572,2575],{"className":2562},[109],[27,2564],{"className":2565,"style":1395},[113],[27,2567,51],{"className":2568},[118],[27,2570],{"className":2571,"style":1382},[234],[27,2573,63],{"className":2574},[168],[27,2576],{"className":2577,"style":1382},[234],[27,2579,2581,2584,2652,2655,2658],{"className":2580},[109],[27,2582],{"className":2583,"style":249},[113],[27,2585,2587,2590,2649],{"className":2586},[118],[27,2588],{"className":2589},[122,123],[27,2591,2593],{"className":2592},[46],[27,2594,2596,2641],{"className":2595},[130,131],[27,2597,2599,2638],{"className":2598},[135],[27,2600,2602,2616,2624],{"className":2601,"style":140},[139],[27,2603,2604,2607],{"style":143},[27,2605],{"className":2606,"style":148},[147],[27,2608,2610],{"className":2609},[152,153,154,155],[27,2611,2613],{"className":2612},[118,155],[27,2614,89],{"className":2615},[118,155],[27,2617,2618,2621],{"style":190},[27,2619],{"className":2620,"style":148},[147],[27,2622],{"className":2623,"style":198},[197],[27,2625,2626,2629],{"style":201},[27,2627],{"className":2628,"style":148},[147],[27,2630,2632],{"className":2631},[152,153,154,155],[27,2633,2635],{"className":2634},[118,155],[27,2636,66],{"className":2637},[118,155],[27,2639,218],{"className":2640},[217],[27,2642,2644],{"className":2643},[135],[27,2645,2647],{"className":2646,"style":313},[139],[27,2648],{},[27,2650],{"className":2651},[187,123],[27,2653],{"className":2654,"style":1382},[234],[27,2656,1229],{"className":2657},[168],[27,2659],{"className":2660,"style":1382},[234],[27,2662,2664,2667,2670,2673,2676],{"className":2663},[109],[27,2665],{"className":2666,"style":1395},[113],[27,2668,66],{"className":2669},[118],[27,2671],{"className":2672,"style":1382},[234],[27,2674,63],{"className":2675},[168],[27,2677],{"className":2678,"style":1382},[234],[27,2680,2682,2685,2753,2756,2759],{"className":2681},[109],[27,2683],{"className":2684,"style":249},[113],[27,2686,2688,2691,2750],{"className":2687},[118],[27,2689],{"className":2690},[122,123],[27,2692,2694],{"className":2693},[46],[27,2695,2697,2742],{"className":2696},[130,131],[27,2698,2700,2739],{"className":2699},[135],[27,2701,2703,2717,2725],{"className":2702,"style":140},[139],[27,2704,2705,2708],{"style":143},[27,2706],{"className":2707,"style":148},[147],[27,2709,2711],{"className":2710},[152,153,154,155],[27,2712,2714],{"className":2713},[118,155],[27,2715,89],{"className":2716},[118,155],[27,2718,2719,2722],{"style":190},[27,2720],{"className":2721,"style":148},[147],[27,2723],{"className":2724,"style":198},[197],[27,2726,2727,2730],{"style":201},[27,2728],{"className":2729,"style":148},[147],[27,2731,2733],{"className":2732},[152,153,154,155],[27,2734,2736],{"className":2735},[118,155],[27,2737,71],{"className":2738},[118,155],[27,2740,218],{"className":2741},[217],[27,2743,2745],{"className":2744},[135],[27,2746,2748],{"className":2747,"style":313},[139],[27,2749],{},[27,2751],{"className":2752},[187,123],[27,2754],{"className":2755,"style":1382},[234],[27,2757,1229],{"className":2758},[168],[27,2760],{"className":2761,"style":1382},[234],[27,2763,2765,2768,2771,2774,2777],{"className":2764},[109],[27,2766],{"className":2767,"style":1395},[113],[27,2769,614],{"className":2770},[118],[27,2772],{"className":2773,"style":1382},[234],[27,2775,63],{"className":2776},[168],[27,2778],{"className":2779,"style":1382},[234],[27,2781,2783,2786,2854,2857,2860],{"className":2782},[109],[27,2784],{"className":2785,"style":249},[113],[27,2787,2789,2792,2851],{"className":2788},[118],[27,2790],{"className":2791},[122,123],[27,2793,2795],{"className":2794},[46],[27,2796,2798,2843],{"className":2797},[130,131],[27,2799,2801,2840],{"className":2800},[135],[27,2802,2804,2818,2826],{"className":2803,"style":140},[139],[27,2805,2806,2809],{"style":143},[27,2807],{"className":2808,"style":148},[147],[27,2810,2812],{"className":2811},[152,153,154,155],[27,2813,2815],{"className":2814},[118,155],[27,2816,89],{"className":2817},[118,155],[27,2819,2820,2823],{"style":190},[27,2821],{"className":2822,"style":148},[147],[27,2824],{"className":2825,"style":198},[197],[27,2827,2828,2831],{"style":201},[27,2829],{"className":2830,"style":148},[147],[27,2832,2834],{"className":2833},[152,153,154,155],[27,2835,2837],{"className":2836},[118,155],[27,2838,76],{"className":2839},[118,155],[27,2841,218],{"className":2842},[217],[27,2844,2846],{"className":2845},[135],[27,2847,2849],{"className":2848,"style":313},[139],[27,2850],{},[27,2852],{"className":2853},[187,123],[27,2855],{"className":2856,"style":1382},[234],[27,2858,1229],{"className":2859},[168],[27,2861],{"className":2862,"style":1382},[234],[27,2864,2866,2869,2872,2875,2878],{"className":2865},[109],[27,2867],{"className":2868,"style":334},[113],[27,2870,71],{"className":2871},[118],[27,2873],{"className":2874,"style":235},[234],[27,2876,82],{"className":2877},[239],[27,2879],{"className":2880,"style":235},[234],[27,2882,2884,2887],{"className":2883},[109],[27,2885],{"className":2886,"style":249},[113],[27,2888,2890,2893,2952],{"className":2889},[118],[27,2891],{"className":2892},[122,123],[27,2894,2896],{"className":2895},[46],[27,2897,2899,2944],{"className":2898},[130,131],[27,2900,2902,2941],{"className":2901},[135],[27,2903,2905,2919,2927],{"className":2904,"style":140},[139],[27,2906,2907,2910],{"style":143},[27,2908],{"className":2909,"style":148},[147],[27,2911,2913],{"className":2912},[152,153,154,155],[27,2914,2916],{"className":2915},[118,155],[27,2917,1277],{"className":2918},[118,155],[27,2920,2921,2924],{"style":190},[27,2922],{"className":2923,"style":148},[147],[27,2925],{"className":2926,"style":198},[197],[27,2928,2929,2932],{"style":201},[27,2930],{"className":2931,"style":148},[147],[27,2933,2935],{"className":2934},[152,153,154,155],[27,2936,2938],{"className":2937},[118,155],[27,2939,2450],{"className":2940},[118,155],[27,2942,218],{"className":2943},[217],[27,2945,2947],{"className":2946},[135],[27,2948,2950],{"className":2949,"style":313},[139],[27,2951],{},[27,2953],{"className":2954},[187,123],[14,2956,2957],{},"可以看到，最佳顺序，即权重从大到小的排序。",[1115,2959,2961],{"id":2960},"方案五不可思议","方案五、不可思议",[14,2963,2964],{},"方案四中，实际上引入了一个新的耗时步骤，我们必须对 weightedRandom 排序，当这是一个很大的列表时，效率也就被拉低了。",[14,2966,2967,2968,3016,3017,3089],{},"在方案五中，我们考虑使用累积权重，而不是原始权重。并且由于累积权重是升序排序的，我们可以使用二分来加快速度，因为二分查找可以将时间复杂度从 ",[27,2969,2971,2993],{"className":2970},[30],[27,2972,2974],{"className":2973},[34],[36,2975,2976],{"xmlns":38},[40,2977,2978,2990],{},[43,2979,2980,2983,2985,2988],{},[1216,2981,2982],{},"O",[55,2984,58],{"stretchy":57},[1216,2986,2987],{},"n",[55,2989,79],{"stretchy":57},[97,2991,2992],{"encoding":99},"O(n)",[27,2994,2996],{"className":2995,"ariaHidden":105},[104],[27,2997,2999,3003,3007,3010,3013],{"className":2998},[109],[27,3000],{"className":3001,"style":3002},[113],"height:1em;vertical-align:-0.25em;",[27,3004,2982],{"className":3005,"style":3006},[118,1294],"margin-right:0.0278em;",[27,3008,58],{"className":3009},[122],[27,3011,2987],{"className":3012},[118,1294],[27,3014,79],{"className":3015},[187]," 变为 ",[27,3018,3020,3053],{"className":3019},[30],[27,3021,3023],{"className":3022},[34],[36,3024,3025],{"xmlns":38},[40,3026,3027,3050],{},[43,3028,3029,3031,3033,3036,3039,3042,3044,3046,3048],{},[1216,3030,2982],{},[55,3032,58],{"stretchy":57},[1216,3034,3035],{},"l",[1216,3037,3038],{},"o",[1216,3040,3041],{},"g",[55,3043,58],{"stretchy":57},[1216,3045,2987],{},[55,3047,79],{"stretchy":57},[55,3049,79],{"stretchy":57},[97,3051,3052],{"encoding":99},"O(log(n))",[27,3054,3056],{"className":3055,"ariaHidden":105},[104],[27,3057,3059,3062,3065,3068,3072,3075,3079,3082,3085],{"className":3058},[109],[27,3060],{"className":3061,"style":3002},[113],[27,3063,2982],{"className":3064,"style":3006},[118,1294],[27,3066,58],{"className":3067},[122],[27,3069,3035],{"className":3070,"style":3071},[118,1294],"margin-right:0.0197em;",[27,3073,3038],{"className":3074},[118,1294],[27,3076,3041],{"className":3077,"style":3078},[118,1294],"margin-right:0.0359em;",[27,3080,58],{"className":3081},[122],[27,3083,2987],{"className":3084},[118,1294],[27,3086,3088],{"className":3087},[187],"))","。",[1129,3091,3094],{"className":3092,"code":3093,"language":1134,"meta":1135},[1132],"func weightedRandomS5(weights []int) int {\n\trand.Seed(time.Now().UnixNano())\n\tsum := 0\n\tvar sumWeight []int\n\tfor _, v := range weights {\n\t\tsum += v\n\t\tsumWeight = append(sumWeight, sum)\n\t}\n\tr := rand.Intn(sum)\n\tidx := sort.SearchInts(sumWeight, r)\n\treturn weights[idx]\n}\n\n",[1137,3095,3093],{"__ignoreMap":1135},[1115,3097,3099],{"id":3098},"方案六不死不休","方案六、不死不休",[14,3101,3102],{},"到目前位置，我们的解决方案已经足够好了，但是仍然有改进的余地。",[14,3104,3105],{},"方案五中，我们使用了 go 标准库的二分查找算法 sort.SearchInts() ，它这是封装了通用的 sort.Search() 函数，如下。",[14,3107,3108],{},[3109,3110],"img",{"alt":3111,"src":3112},"sort.SearchInts","https:\u002F\u002Fpic2.fukit.cn\u002Fautoupload\u002FZ3wg1auvHGH_fxQcOFgj2SfNcKcqEnRmcljopnyJoMs\u002F20260123\u002FGEQt\u002F737X281\u002Fstd-sort-search-01.png\u002Fwebp",[14,3114,3115],{},"sort.Search() 的函数参数需要一个闭包函数，并且这个闭包函数是在 for 循环中使用的，如下。",[14,3117,3118],{},[3109,3119],{"alt":3120,"src":3121},"sort.Search","https:\u002F\u002Fimg.51shazhu.com\u002Fautoupload\u002FZ3wg1auvHGH_fxQcOFgj2SfNcKcqEnRmcljopnyJoMs\u002F20250731\u002FGy6B\u002F747X425\u002Fstd-sort-search-02.png\u002Fwebp",[14,3123,3124],{},"所以目前无法被编译器正确地内联，从而导致了非实质性的性能开销，在方案六中，我们可以编写一个手动内联的版本。",[1129,3126,3129],{"className":3127,"code":3128,"language":1134,"meta":1135},[1132],"func weightedRandomS6(weights []int) int {\n\trand.Seed(time.Now().UnixNano())\n\tsum := 0\n\tvar sumWeight []int\n\tfor _, v := range weights {\n\t\tsum += v\n\t\tsumWeight = append(sumWeight, sum)\n\t}\n\tr := rand.Intn(sum)\n\tidx := searchInts(sumWeight, r)\n\treturn weights[idx]\n}\n\nfunc searchInts(a []int, x int) int {\n\ti, j := 0, len(a)\n\tfor i \u003C j {\n\t\th := int(uint(i+j) >> 1)\n\t\tif a[h] \u003C x {\n\t\t\ti = h + 1\n\t\t} else {\n\t\t\tj = h\n\t\t}\n\t}\n\treturn i\n}\n",[1137,3130,3128],{"__ignoreMap":1135},[14,3132,3133],{},"通过基准测试可以看到吞吐量提升了 33% 以上。对于大型数据集，优势越明显。",[14,3135,3136],{},[3109,3137],{"alt":3138,"src":3139},"优化前","https:\u002F\u002Fpic2.fukit.cn\u002Fautoupload\u002FZ3wg1auvHGH_fxQcOFgj2SfNcKcqEnRmcljopnyJoMs\u002F20260123\u002FVSPs\u002F671X396\u002FResult-01.png\u002Fwebp",[14,3141,3142],{},[3109,3143],{"alt":3144,"src":3145},"优化后","https:\u002F\u002Fpic2.fukit.cn\u002Fautoupload\u002FZ3wg1auvHGH_fxQcOFgj2SfNcKcqEnRmcljopnyJoMs\u002F20260123\u002FA2tz\u002F667X389\u002FResult-02.png\u002Fwebp",[1115,3147,3149],{"id":3148},"方案七轮盘赌","方案七、轮盘赌",[14,3151,3152],{},"目前为止我们所有的方案都有一个共同点 —— 生成一个介于 0 和权重之和之间的随机数，并找出它属于哪个“切片”。",[14,3154,3155],{},"还有一种不同的方法。",[1129,3157,3160],{"className":3158,"code":3159,"language":1134,"meta":1135},[1132],"func weightedRandomS7(weights []float64) int {\n\tvar sum float64\n\tvar winner int\n\trand.Seed(time.Now().UnixNano())\n\tfor i, v := range weights {\n\t\tsum += v\n\t\tf := rand.Float64()\n\t\tif f*sum \u003C v {\n\t\t\twinner = i\n\t\t}\n\t}\n\treturn winner\n}\n",[1137,3161,3159],{"__ignoreMap":1135},[14,3163,3164],{},"这个算法的一个有趣的特性是你不需要提前知道权重的数量就可以使用它。所以说，它或许可以用于某种流。",[14,3166,3167],{},"尽管这种方案很酷，但它比其他方案慢得多。相对于方案一，它也快了 25% 。",[10,3169,3170],{"id":3170},"源代码",[14,3172,3173],{},[3174,3175,3176],"a",{"href":3176,"rel":3177},"https:\u002F\u002Fgithub.com\u002Fguowei-gong\u002Fweighted-random",[3178],"nofollow",{"title":1135,"searchDepth":3180,"depth":3180,"links":3181},4,[3182,3184,3194],{"id":12,"depth":3183,"text":12},2,{"id":1113,"depth":3183,"text":1113,"children":3185},[3186,3188,3189,3190,3191,3192,3193],{"id":1117,"depth":3187,"text":1118},3,{"id":1141,"depth":3187,"text":1142},{"id":1157,"depth":3187,"text":1158},{"id":1173,"depth":3187,"text":1174},{"id":2960,"depth":3187,"text":2961},{"id":3098,"depth":3187,"text":3099},{"id":3148,"depth":3187,"text":3149},{"id":3170,"depth":3183,"text":3170},[3196],"技术","2022-02-16 18:34:07","“偏心”的得到某种随机结果。",false,"md","https:\u002F\u002Fimg2.tofaka.com\u002Fautoupload\u002FZ3wg1auvHGH_fxQcOFgj2SfNcKcqEnRmcljopnyJoMs\u002F20260616\u002FyyJZ\u002F1373X582\u002F%E5%BE%AE%E4%BF%A1%E5%9B%BE%E7%89%87_20260616163159.png\u002Fwebp",{"slots":3203},{},true,"\u002F2022\u002Fweight-random",null,{"text":3208,"minutes":3209,"time":3210,"words":3211},"8 min read",7.37,442200,1474,1,{"title":5,"description":3198},{"loc":3205},"posts\u002F2022\u002Fweight-random",[3217,3218],"概率","游戏","story","ImN8Bpye0ubkFDS7RULycRdWYzZ3hZMGSIRXfzK4YqA",[3222,3227],{"title":3223,"path":3224,"stem":3225,"date":3226,"type":3219,"children":-1},"移除跑马灯广告","\u002F2021\u002Fffmpeg_marquee_ads_processing","posts\u002F2021\u002Fffmpeg_marquee_ads_processing","2021-02-23 19:53:37",{"title":3228,"path":3229,"stem":3230,"date":3231,"type":3219,"children":-1},"0 秒改 struct 性能直接提升 15%，产品姐姐都夸我好棒","\u002F2022\u002Fstruct_perf_boost_15_percent","posts\u002F2022\u002Fstruct_perf_boost_15_percent","2022-08-18 19:53:37",1781779103066]