Slumptal utan upprepningar

Formulering av problemet

Låt oss anta att vi behöver skapa en uppsättning heltals slumptal utan upprepningar i ett givet värdeintervall. Exempel på språng:

  • skapa unika slumpmässiga koder för produkter eller användare
  • tilldela personer till uppgifter (var och en slumpmässigt från listan)
  • permutation av ord i sökfrågan (hej seo-shnikam)
  • spela lotto osv.

Metod 1. Enkel

Till att börja med, låt oss överväga ett enkelt alternativ: vi måste få en slumpmässig uppsättning av 10 heltal från 1 till 10. Använda funktionen inbyggd i Excel MELLAN FALLET (KANT MELLAN) unikhet är inte garanterad. Om du anger det i en arkcell och kopierar det ner 10 celler, kan upprepningar lätt ske:

Slumptal utan upprepningar

Därför kommer vi att gå åt andra hållet.

Alla versioner av Excel har en funktion RANG (RANG), avsedd för rangordning eller, med andra ord, bestämning av toppositionen för ett nummer i en uppsättning. Det största antalet i listan har rank=1, det andra i toppen har rank=2, och så vidare.

Låt oss skriva in funktionen i cell A2 SLCHIS (RAND) utan argument och kopiera formeln ner 10 celler. Denna funktion kommer att generera oss en uppsättning av 10 slumpmässiga bråktal från 0 till 1:

Slumptal utan upprepningar

I nästa kolumn introducerar vi funktionen RANGför att bestämma positionen i rankingen för varje mottagen slumptal:

Slumptal utan upprepningar

Vi får i kolumn B vad vi ville ha – valfritt antal icke-upprepande slumpmässiga heltal från 1 till 10.

Rent teoretiskt kan det uppstå en situation när SLCHIS ger oss två identiska slumptal i kolumn A, deras rangordning kommer att matcha och vi får en upprepning i kolumn B. Sannolikheten för ett sådant scenario är dock extremt liten, med tanke på att noggrannheten är 15 decimaler.

Metod 2. Komplicerat

Denna metod är något mer komplicerad, men använder bara en matrisformel. Låt oss säga att vi behöver skapa en lista med 9 icke-upprepande slumpmässiga heltal i intervallet från 1 till 50 på ett ark.

Ange följande formel i cell A2, klicka i slutet Ctrl + Skift + Enter (för att ange den som en matrisformel!) och kopiera formeln ner till önskat antal celler:

Slumptal utan upprepningar

Metod 3. Makro

Och naturligtvis kan du lösa problemet med hjälp av programmering i Visual Basic. I en av de gamla artiklarna om slumpmässig sampling citerade jag redan Lotto array-makrofunktionen, som producerar det erforderliga antalet slumpmässiga icke-repeterande tal från ett givet intervall.

  • Hur man räknar antalet unika värden i ett intervall
  • Slumpmässigt urval av element från en lista

Kommentera uppropet