Excel-formel: Tilfeldig antall vektet sannsynlighet -

Innholdsfortegnelse

Generisk formel

=MATCH(RAND(),cumulative_probability)

Sammendrag

For å generere et tilfeldig tall, vektet med en gitt sannsynlighet, kan du bruke en hjelpetabell sammen med en formel basert på RAND- og MATCH-funksjonene.

I eksemplet vist er formelen i F5:

=MATCH(RAND(),D$5:D$10)

Forklaring

Denne formelen er avhengig av hjelpetabellen som er synlig i området B4: D10. Kolonne B inneholder de seks tallene vi ønsker som et endelig resultat. Kolonne C inneholder sannsynlighetsvekten tildelt hvert nummer, angitt i prosent. Kolonne D inneholder den kumulative sannsynligheten, opprettet med denne formelen i D5, kopiert ned:

=SUM(D4,C4)

Legg merke til at vi med vilje skifter den kumulative sannsynligheten ned en rad, slik at verdien i D5 er null. Dette er for å sikre at MATCH er i stand til å finne en posisjon for alle verdier ned til null som forklart nedenfor.

For å generere en tilfeldig verdi, ved hjelp av den vektede sannsynligheten i hjelpetabellen, inneholder F5 denne formelen, kopiert ned:

=MATCH(RAND(),D$5:D$10)

Inne i MATCH leveres oppslagsverdien av RAND-funksjonen. RAND genererer en tilfeldig verdi mellom null og 1. Oppslagsmatrisen er området D5: D10, låst slik at den ikke endres ettersom formelen kopieres nedover i kolonnen.

Det tredje argumentet for MATCH, samsvarstype, er utelatt. Når samsvarstype er utelatt, vil MATCH returnere posisjonen til den største verdien mindre enn eller lik oppslagsverdien *. I praksis betyr dette at MATCH-funksjonen beveger seg langs verdiene i D5: D10 til en større verdi oppstår, og deretter "går tilbake" til forrige posisjon. Når MATCH møter en verdi som er større enn den største siste verdien i D5: D10 (.7 i eksemplet), returnerer den siste posisjon (6 i eksemplet). Som nevnt ovenfor er den første verdien i D5: D10 bevisst null for å sikre at verdiene under .1 "fanges" av oppslagstabellen og returnerer en posisjon på 1.

* Verdiene i oppslagsområdet må sorteres i stigende rekkefølge.

Tilfeldig vektet tekstverdi

For å returnere en tilfeldig vektet tekstverdi (dvs. en ikke-numerisk verdi), kan du angi tekstverdier i området B5: B10, og deretter legge til INDEKS for å returnere en verdi i det området, basert på posisjonen som returneres av MATCH:

=INDEX($B$5:$B$10,MATCH(RAND(),D$5:D$10))

Merknader

  1. Jeg kjørte inn i denne tilnærmingen i et foruminnlegg på mrexcel.com
  2. RAND er en ustabil funksjon og vil beregne på nytt med hvert regnearksendring
  3. Når du har tilfeldige (r) verdier, bruk lim inn spesielle> verdier for å erstatte formelen om nødvendig

Interessante artikler...