Shuffle() vs random_shuffle() keeles C++

Shuffle Vs Random Shuffle Keeles C



C++ puhul pakub standardne teek kahte funktsiooni, segamine () ja random_shuffle() mida kasutatakse konteineri elementide ümberkorraldamiseks. Kuigi mõlemad funktsioonid täidavad sama eesmärki, erinevad need oma teostuse ja juhuslike arvude genereerimise viisi poolest.

Sellest artiklist leiate nende kahe funktsiooni erinevused ja saate aru, kuidas need töötavad.

shuffle() keeles C++

The segamine () Funktsioon on sisseehitatud C++ funktsioon, mida kasutatakse elementide juhuslikuks segamiseks või ümberpaigutamiseks antud vahemikus. Funktsioon on deklareeritud päisefail ja sellel on kaks argumenti: vahemiku alguspositsioon on esimene argument ja teine ​​argument tähistab lõpppositsiooni.







Lisaks võtab see ka valikulise kolmanda parameetri, mis on funktsiooniobjekt, mis genereerib juhuslikke numbreid, mida kasutatakse vahemiku elementide segamiseks.



Kui segamine () Kui funktsiooni kutsutakse, korraldab see määratud vahemikus olevad elemendid juhuslikult ümber, kasutades selleks ette nähtud juhuslike arvude generaatorit. Segamise tulemus ei ole ennustatav ja elementide iga võimalik permutatsioon on võrdselt tõenäoline.



Näide

Vaadake allolevat näidet selle kasutamise kohta funktsioon shuffle(). keeles C++. Selles programmis oleme loonud vektori asi täisarvudega 0 kuni 10. Seejärel genereerime juhuslike arvude generaatori, mis seejärel edastatakse koos vektori vahemikuga segamine () funktsiooni. The segamine () funktsioon võtab arvu ja vahetab selle arvu alusel elemendid. Seejärel printisime ümberkorraldatud vektorjada, kasutades for-silmust





#include

#include

#include

#include

#include

kasutades nimeruumi std ;

int peamine ( )

{

vektor < int > asi { 1 , 2 , 3 , 4 , 5 , 6 , 7 , 8 , 9 , 10 } ;

allkirjastamata seeme = krono :: süsteemi_kell :: nüüd ( ) . aeg_ajastust ( ) . loendama ( ) ;

segada ( asi. alustada ( ) , asi. lõpp ( ) , vaikimisi_juhuslik_mootor ( seeme ) ) ;

cout << 'segatud elemendid on:' ;

jaoks ( int & i : asi )

cout << '' << i ;

cout << endl ;

tagasi 0 ;

}

random_shuffle() keeles C++

The random_shuffle() Samuti korraldab funktsioon antud vahemikus olevad elemendid juhuslikult mõne juhuslikult valitud numbriga ümber. See kasutab juhuslike arvude jada genereerimiseks juhuslike arvude generaatorit ja seejärel kasutab neid numbreid vahemiku elementide segamiseks, nii et programmi jada on iga kord, kui programmi käivitate, erinev.



Selleks on vaja kahte parameetrit random_shuffle() : vahemiku alguspositsioon on esimene parameeter ja teine ​​parameeter on lõppasend. Lisaks random_shuffle() võib võtta valikulise kolmanda parameetri, mis on funktsiooniobjekt, mida saab kasutada juhuslike arvude genereerimiseks elementide segamiseks.

Näide

Allolev näide illustreerib seadme tööd random_shuffle() keeles C++. Selles koodis oleme loonud a vektori asi täisarvude väärtustega 1 kuni 10 ja seejärel kasutati silmuse jaoks juhuslikult segatud jada printimiseks:

#include

#include

kasutades nimeruumi std ;

int peamine ( )

{

vektor < int > asi { 1 , 2 , 3 , 4 , 5 , 6 , 7 , 8 , 9 , 10 } ;

srand ( static_cast < allkirjastamata int > ( aega ( nullptr ) ) ) ;

random_shuffle ( asi. alustada ( ) , asi. lõpp ( ) ) ;

jaoks ( int i : asi ) {

cout << i << ' ' ;

}

cout << ' \n ' ;



tagasi 0 ;

}

Erinevus shuffle() ja random_shuffle() vahel

Siin on peamised erinevused segamine () ja random_shuffle() funktsioonid C++-s.

1: random_shuffle() võtab paar iteraatorit, mis esindavad segatavate elementide vahemikku, while segamine () võtab paar iteraatorit, mis esindavad segatavate elementide vahemikku, ja juhuslike arvude generaatorit, mida segamiseks kasutada.

2: random_shuffle() on üldiselt vähem tõhus kui segamine () , kuna see peab genereerima juhuslike arvude jada, mida segamiseks kasutada.

3: random_shuffle() kasutab elementide segamiseks C++ Standard Library sisemist juhuslike arvude generaatori teostust segamine () võimaldab teil määrata segamise jaoks oma juhuslike numbrite generaatori, mis annab teile segamise juhuslikkuse üle suurema kontrolli.

4: random_shuffle() võeti kasutusele C++98-s ja seda toetavad kõik C++ standardteegi versioonid, samas segamine () tutvustati C++11-s ja seda toetavad ainult kompilaatorid, mis rakendavad standardi seda versiooni.

Viimased mõtted

Valik vahel segamine () ja random_shuffle() sõltub teie konkreetsest kasutusjuhtumist ja nõuetest. Kui vajate segamise juhuslikkuse üle suuremat kontrolli või kui soovite kasutada kohandatud juhuslike arvude generaatorit, segamine () oleks parem valik. Teisest küljest, kui te ei vaja sellist juhtimistaset ja soovite lihtsalt lihtsat viisi elementide segamiseks, siis random_shuffle() võiks olla piisav.