Како рандомизирати листу у Питхону

Стављање листе случајним редоследом може изгледати необично, али многим компанијама може бити врло корисно. На пример, можда ћете желети да насумично доделите потенцијалне купце продавачима, доделите послове запосленима или водите томболу за купце. Без обзира на разлог, можете користити популарни програмски језик Питхон да бисте рандомизирали редослед листе елемената.

Ако генеришете насумичне листе или случајне бројеве у осетљиве сврхе, као што је наградна игра са уложеним новцем или криптографске сврхе, побрините се да користите висококвалитетни генератор случајних бројева.

Насумично премештајте листу у Питхону

Помоћу Питхона можете да направите алатку за рандомизацију листе у само неколико редова кода. Питхон је бесплатан за комерцијалну и личну употребу и доступан је за све савремене оперативне системе, укључујући Мицрософт Виндовс, мацОС, Линук и друге системе у Уник стилу.

Питхон 2 и Питхон 3, две верзије програмског језика у широкој употреби, укључују функцију тзв мешање који могу рандомизирати листу или другу секвенцу података. Да бисте користили мешање, увезите случајни пакет Питхон додавањем линије случајни увоз при врху вашег програма.

Затим, ако имате позвану листу Икс, можете позвати насумично премештање (к) да функција насумичног мешања преуређује листу на насумичан начин.

Имајте на уму да функција мешања замењује постојећу листу. Ако желите да задржите копију листе у оригиналном редоследу, направите копију листе пре него што је преместите. Можете увести Питхон пакет за копирање и користити његов копија начин да се то учини. Користите и = цопи.цопи (к) да бисте креирали копију листе Икс и доделити променљиву г. да се на њега позива. Имајте на уму да ако пишете и = к, променљива г. додељује се да упућује на исти списак као и Икс ради, а нова копија се не креира.

Ухвати случајни елемент

Ако само желите да уграбите случајни елемент са листе у Питхону, то можете да урадите и са случајним пакетом. Увезите случајни пакет укључивањем случајни увоз при врху кода.

Да бисте изабрали један елемент, користите рандом.цхоице (к), где Икс је име ваше листе. Функција враћа један, случајно одабрани елемент са листе Икс. Имајте на уму да ако зовете случајни.избор више пута, исти елемент листе можете добити више пута, осим ако га не избришете са листе између позива.

Ако желите да зграбите скуп више елемената који не укључује исти елемент два пута, користите рандом.сампле (к, к), где Икс је списак и к је број елемената који желите. Ако листа укључује поновљене елементе, они се могу поновити у случајном узорку.

Ризици са генераторима случајних бројева

Нису сви генератори случајних бројева једнаки. Питхон документација упозорава да уграђени Питхонов генератор случајних бројева није погодан за криптографске сврхе, где је потребан минимални ниво стварне насумичности за стварање генератора случајних бројева за шифровање података са малим ризиком од дешифровања независних произвођача. Ако је за ваше пословање важно да је листа заиста случајна и непредвидљива, као на пример за извлачење томболе, важно је да користите прави генератор случајних бројева.

Неке поткласе Питхон случајног модула пружају повећане нивое случајности. На модерним оперативним системима можете да затражите од оперативног система да пружи случајне податке квалитета корисног за криптографију. Путем Питхона, овим случајним подацима можете приступити помоћу функције ос.урандом у ос модулу, или можете назвати рандом.СистемРандом да генерише генератор случајних бројева еквивалентан случајном модулу користећи случајне податке оперативног система.

Да бисте ово користили код мешања, откуцајте р = рандом.СистемРандом () да би се генерисао генератор случајних бројева, а затим назвао случајно премештање (к) на вашој листи Икс. Остале функције, укључујући избор и узорак, такође се може користити са СистемРандом генератором.

Проверите документацију свог оперативног система да бисте разумели како функционише његов генератор случајних бројева и да ли је прикладан за ваше потребе. У неким случајевима ћете можда моћи да конфигуришете оперативни систем да користи спољни хардверски уређај за генерисање случајних бројева.