Выпадковыя лікі без паўтораў

Пастаноўка задачы

Выкажам здагадку, што нам трэба стварыць набор цэлых выпадковых лікаў без паўтораў у зададзеным дыяпазоне значэнняў. Прыклады на хаду:

  • генерацыя унікальных выпадковых кодаў для прадуктаў або карыстальнікаў
  • размеркаванне людзей на задачы (кожны выпадковым чынам са спісу)
  • перастаноўка слоў у пошукавым запыце (прывітанне seo-шникам)
  • гуляць у лато і г.д.

Спосаб 1. Просты

Для пачатку разгледзім просты варыянт: нам трэба атрымаць выпадковы набор з 10 цэлых лікаў ад 1 да 10. З дапамогай убудаванай у Excel функцыі МІЖ СПРАВАЮ (КРАЙ ПАМІЖ) унікальнасць не гарантуецца. Калі ўвесці яго ў ячэйку ліста і скапіяваць на 10 вочак уніз, то паўторы могуць лёгка адбыцца:

Выпадковыя лікі без паўтораў

Таму пойдзем іншым шляхам.

Усе версіі Excel маюць функцыю RANK (RANG), прызначаны для ранжыравання або, іншымі словамі, вызначэння верхняй пазіцыі ліку ў наборы. Самая вялікая лічба ў спісе мае ранг = 1, другая ўверсе - ранг = 2 і гэтак далей.

Давайце ўвядзем функцыю ў ячэйку A2 СЛЧЫС (РАНД) без аргументаў і скапіруйце формулу на 10 вочак уніз. Гэтая функцыя згенеруе нам набор з 10 выпадковых дробавых лікаў ад 0 да 1:

Выпадковыя лікі без паўтораў

У наступным слупку мы ўводзім функцыю RANKвызначыць пазіцыю ў рэйтынгу для кожнага атрыманага выпадковага ліку:

Выпадковыя лікі без паўтораў

Мы атрымліваем у слупку B тое, што хацелі - любую жаданую колькасць непаўтаральных выпадковых цэлых лікаў ад 1 да 10.

Чыста тэарэтычна можа ўзнікнуць сітуацыя, калі СЛЧЫС дасць нам два аднолькавыя выпадковыя лікі ў слупку A, іх рангі супадуць, і мы атрымаем паўтор у слупку B. Аднак верагоднасць такога сцэнару надзвычай малая, улічваючы той факт, што дакладнасць складае 15 знакаў пасля коскі.

Спосаб 2. Складаны

Гэты метад крыху больш складаны, але выкарыстоўвае толькі адну формулу масіва. Дапусцім, нам трэба стварыць спіс з 9 непаўтаральных выпадковых цэлых лікаў у дыяпазоне ад 1 да 50 на аркушы.

Увядзіце наступную формулу ў ячэйку A2, пстрыкніце ў канцы Ctrl + Shift + Enter (каб увесці яго як формулу масіва!) і скапіруйце формулу ў патрэбную колькасць вочак:

Выпадковыя лікі без паўтораў

Спосаб 3. Макрас

І, вядома ж, вырашыць праблему можна з дапамогай праграмавання на Visual Basic. У адным са старых артыкулаў пра выпадковую выбарку я ўжо згадваў макрафункцыю масіва Lotto, якая выдае патрэбную колькасць выпадковых непаўтаральных лікаў з зададзенага інтэрвалу.

  • Як падлічыць колькасць унікальных значэнняў у дыяпазоне
  • Выпадковы выбар элементаў са спісу

Пакінуць каментар