Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

265
Vistas
¿Qué es un script de Google Apps para calcular la probabilidad de eventos independientes?

Estoy tratando de crear un script que calcule la probabilidad de 0-20 victorias en una temporada de 20 juegos, con los resultados en la Columna F de esta hoja de cálculo . ingrese la descripción de la imagen aquí

Encontrar la probabilidad de 0 y 20 victorias es simple y rápido, porque solo hay una forma de lograr cada una. Calcular la probabilidad de 1:19 victorias es simple, pero lleva mucho más tiempo, porque hay 1 048 576 (2^20-2) formas diferentes de hacerlo. Hay una increíble solución de VBA/Excel para este problema aquí , pero me gustaría usar GAS.

Este es mi intento de GAS:

 function multiplyArrays2() { var ss = SpreadsheetApp.getActiveSpreadsheet(); var sht = ss.getSheetByName("ProbWin"); var probs = sht.getRange("B3:C22").getValues(); for (var i = 0; i < 2^20-1; i++) { //2^20=total combinations var ctr = 0; //I deleted the duplicate of this exact line below var wk and VBA ran var wk = 1; //Added "var" for GAS for (var j; i < 20; i++) { if ix[j] = 1 { //this is the first line GAS underlines red. I don't know how to deal with the "x" wk = wk * probs[j, 1] //changed () to [] to deal with array ctr = ctr + 1 } else { wk = wk * probs[j, 2] } } var outprobs[ctr, 1] = outprobs[ctr, 1] + wk; //added "var" for (var j; i < 20; i++) { ix[j] = ix[j] + 1 //again, I don't know how to deal with the "x" if ix[j] = 1 { ix[j] = 0 } } } sht.getRange("F2:F22").setValues(outprobs); };

Cualquier ayuda es muy apreciada.

about 4 years ago · Juan Pablo Isaza
1 Respuestas
Responde la pregunta

0

En su situación, ¿qué tal la siguiente modificación?

Guión modificado:

 function multiplyArrays2() { var ss = SpreadsheetApp.getActiveSpreadsheet(); var sht = ss.getSheetByName("ProbWin"); var probs = sht.getRange("B3:C22").getValues(); var ix = Array(20).fill(0); var outprobs = [...Array(21)].map(_ => [0]); for (var i = 0; i <= Math.pow(2, 20) - 1; i++) { var ctr = 0; var wk = 1; for (var j = 0; j < 20; j++) { if (ix[j] == 1) { wk *= probs[j][0]; ctr++; } else { wk *= probs[j][1]; } } outprobs[ctr][0] += wk; for (var j = 0; j < 20; j++) { ix[j]++; if (ix[j] == 1) break; ix[j] = 0; } } sht.getRange("F2:F22").setValues(outprobs); }

Resultado:

Cuando se ejecuta este script para su hoja de cálculo de muestra, se obtiene el siguiente resultado.

ingrese la descripción de la imagen aquí

Nota:

  • Cuando vi su hoja de cálculo de muestra, el nombre de la hoja es ProbWin . Por favor tenga cuidado con esto.
  • Este script modificado es para su hoja de cálculo de muestra. Entonces, cuando cambió la hoja de cálculo, es posible que no se pueda usar este script. Por favor tenga cuidado con esto.
about 4 years ago · Juan Pablo Isaza Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda