Véletlen számok ismétlés nélkül

A probléma megfogalmazása

Tételezzük fel, hogy egy adott értéktartományban ismétlődések nélküli egész véletlenszámok halmazát kell létrehoznunk. Példák útközben:

  • egyedi véletlenszerű kódok generálása termékek vagy felhasználók számára
  • emberek hozzárendelése feladatokhoz (mindegyik véletlenszerűen a listából)
  • szavak permutációja a keresési lekérdezésben (hello seo-shnikam)
  • lottózni stb.

1. módszer. Egyszerű

Kezdésként vegyünk egy egyszerű lehetőséget: 10 egész számból álló véletlenszerű halmazt kell kapnunk 1-től 10-ig. Az Excelbe épített függvény használata AZ ÜGY KÖZÖTT (ÉL KÖZÖTT) az egyediség nem garantált. Ha beírja egy lapcellába, és lemásolja 10 cellával, akkor könnyen előfordulhat ismétlődés:

Véletlen számok ismétlés nélkül

Ezért a másik irányba fogunk menni.

Az Excel minden verziója rendelkezik funkcióval RANG (CSENGETETT), amely rangsorolásra vagy más szóval egy szám felső pozíciójának meghatározására szolgál egy halmazban. A lista legnagyobb számának rang=1, az élen lévő másodiknak rang=2 stb.

Írjuk be a függvényt az A2 cellába SLCHIS (RAND) argumentumok nélkül, és másolja le a képletet 10 cellával. Ez a függvény 10 véletlenszerű törtszámot generál 0 és 1 között:

Véletlen számok ismétlés nélkül

A következő oszlopban bemutatjuk a függvényt RANGaz egyes kapott véletlen számok rangsorban elfoglalt pozíciójának meghatározásához:

Véletlen számok ismétlés nélkül

A B oszlopban azt kapjuk, amit akartunk – tetszőleges számú nem ismétlődő véletlenszerű egész szám 1-től 10-ig.

Pusztán elméletileg olyan helyzet állhat elő, amikor SLCHIS két azonos véletlenszámot ad nekünk az A oszlopban, ezek sorrendje megegyezik, és a B oszlopban ismétlést kapunk. Azonban egy ilyen forgatókönyv valószínűsége rendkívül kicsi, tekintettel arra, hogy a pontosság 15 tizedesjegy.

Módszer 2. Bonyolult

Ez a módszer valamivel bonyolultabb, de csak egy tömbképletet használ. Tegyük fel, hogy egy lapon létre kell hoznunk egy listát 9 nem ismétlődő véletlenszerű egész számból 1 és 50 között.

Írja be a következő képletet az A2 cellába, kattintson a végén Ctrl + Shift + Enter (hogy tömbképletként írja be!), és másolja le a képletet a kívánt számú cellára:

Véletlen számok ismétlés nélkül

3. módszer. Makró

És természetesen megoldhatja a problémát a Visual Basic programozásával. Az egyik régi, véletlenszerű mintavételről szóló cikkben már idéztem a Lotto tömbmakró függvényt, amely egy adott intervallumból állítja elő a szükséges számú véletlenszerű, nem ismétlődő számot.

  • Hogyan kell megszámolni az egyedi értékek számát egy tartományban
  • Elemek véletlenszerű kiválasztása egy listából

Hagy egy Válaszol