“葫蘆娃救爺爺為啥一個一個上?童年最大疑惑被李永樂老師解開了!”js代碼

B站的視頻“葫蘆娃救爺爺為啥一個一個上?童年最大疑惑被李永樂老師解開了!”很有意思,古典概率建模,然后計算出最優(yōu)策略。但是132個策略是怎么來的沒說清楚,概率曲線也不方便驗證。我用 js+MATLAB 解決了。那個視頻由于權限設置無法評論,我只好另發(fā)出來分享給大家。


這段是?JavaScript?代碼:
<script>
? ? function getStrategies() {
? ? ? ? const res = [];
? ? ? ? for (let i1 = 0; i1 <= 1; i1++) {
? ? ? ? ? ? for (let i2 = 0; i2 <= 2; i2++) {
? ? ? ? ? ? ? ? for (let i3 = 0; i3 <= 3; i3++) {
? ? ? ? ? ? ? ? ? ? for (let i4 = 0; i4 <= 4; i4++) {
? ? ? ? ? ? ? ? ? ? ? ? for (let i5 = 0; i5 <= 5; i5++) {
? ? ? ? ? ? ? ? ? ? ? ? ? ? for (let i6 = 0; i6 <= 6; i6++) {
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? if ((i1 + i2 + i3 + i4 + i5 + i6 === 6)
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? && (i1 + i2 <= 2)
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? && (i1 + i2 + i3 <= 3)
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? && (i1 + i2 + i3 + i4 <= 4)
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? && (i1 + i2 + i3 + i4 + i5 <= 5)) {
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? res.push([i1, i2, i3, i4, i5, i6]);
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? }
? ? ? ? ? ? ? ? ? ? ? ? ? ? }
? ? ? ? ? ? ? ? ? ? ? ? }
? ? ? ? ? ? ? ? ? ? }
? ? ? ? ? ? ? ? }
? ? ? ? ? ? }
? ? ? ? }
? ? ? ? return res;
? ? }
? ? function successProbability(a) {
? ? ? ? let sum = 0;
? ? ? ? let previousFailProbability = 1;
? ? ? ? for (let i = 0; i < a.length; i++) {
? ? ? ? ? ? if (i > 0) {
? ? ? ? ? ? ? ? previousFailProbability *= (1 - a[i - 1] / 7);
? ? ? ? ? ? }
? ? ? ? ? ? sum += previousFailProbability * (6 - i) / 6 * a[i] / 7;
? ? ? ? }
? ? ? ? return sum;
? ? }
? ? let a = getStrategies();
? ? let pArr = [];
? ? for (let i = 0; i < a.length; i++) {
? ? ? ? const j = a.length - 1 - i;
? ? ? ? const p = successProbability(a[j]);
? ? ? ? const pf = parseFloat((p * 100).toFixed(2));
? ? ? ? pArr.push(pf);
? ? ? ? console.log("策略" + (i + 1) + ": " + a[j] + ", P = " + (p * 100).toFixed(2) + "%");
? ? }
? ? console.log("y=[" + pArr.toString() + "];"); //為MATLAB畫圖做準備
</script>

以下是 matlab?代碼:
x=0:131;
y=[39.66,38.56,38.56,37.06,35.99,38.56,37.48,36.81,35.31,34.24,35.99,33.99,32.49,31.49,38.56,37.48,37.48,36.03,34.99,36.51,35.44,34.77,33.27,32.19,33.94,31.95,30.45,29.45,35.99,34.99,33.4,31.95,30.9,31.9,29.9,28.4,27.41,31.49,28.86,26.82,25.36,24.49,38.56,37.48,37.48,36.03,34.99,37.48,36.44,35.78,34.33,33.28,34.99,33.04,31.58,30.61,36.17,35.1,35.1,33.65,32.6,34.13,33.06,32.38,30.88,29.81,31.56,29.56,28.06,27.07,33.6,32.6,31.02,29.56,28.52,29.52,27.52,26.02,25.02,29.11,26.48,24.44,22.98,22.11,35.99,34.99,34.99,33.62,32.65,32.72,31.68,31.02,29.56,28.52,30.22,28.28,26.82,25.85,31.22,30.22,28.64,27.18,26.14,27.14,25.14,23.64,22.64,26.72,24.1,22.06,20.6,19.73,31.49,30.61,27.84,26.48,25.51,25.46,23.52,22.06,21.09,24.34,21.72,19.68,18.22,17.35,24.49,21.09,18.37,16.33,14.97,14.29];
plot(x,y,'.-');
grid on;
