Shuffle() vs random_shuffle() sa C++

Shuffle Vs Random Shuffle Sa C



Sa C++, ang karaniwang library ay nagbibigay ng dalawang function, shuffle() at random_shuffle() na ginagamit upang muling ayusin ang mga elemento ng isang lalagyan. Bagama't ang parehong mga function ay nagsisilbi sa parehong layunin, ang mga ito ay naiiba sa kanilang pagpapatupad at ang paraan ng kanilang pagbuo ng mga random na numero.

Mula sa artikulong ito, makikita mo ang mga pagkakaiba sa pagitan ng dalawang function na ito at mauunawaan mo kung paano gumagana ang mga ito.

shuffle() sa C++

Ang shuffle() Ang function ay isang built-in na C++ function na ginagamit upang random na i-shuffle o muling ayusin ang mga elemento sa isang ibinigay na hanay. Ang function ay ipinahayag sa header file at may dalawang argumento: ang panimulang posisyon ng hanay ay ang unang argumento, at ang pangalawang argumento ay kumakatawan sa pangwakas na posisyon.







Bilang karagdagan, nangangailangan din ito ng isang opsyonal na pangatlong parameter, na isang function na bagay na bumubuo ng mga random na numero na gagamitin para sa pag-shuffling ng mga elemento sa hanay.



Kapag ang shuffle() function ay tinatawag na, ito ay random na muling ayusin ang mga elemento sa tinukoy na hanay gamit ang ibinigay na random na generator ng numero. Ang resulta ng shuffle ay hindi mahuhulaan, at ang bawat posibleng permutasyon ng mga elemento ay pantay na malamang na mangyari.



Halimbawa

Isaalang-alang ang halimbawa sa ibaba ng paggamit ng shuffle() function sa C++. Sa program na ito, nilikha namin ang vector isang bagay na may mga halaga ng integer na 0 hanggang 10. Pagkatapos ay bumubuo kami ng isang random na generator ng numero, na pagkatapos ay ipapasa kasama ng saklaw ng vector sa shuffle() function. Ang shuffle() Kinukuha ng function ang numero at pinapalitan ang mga elemento batay sa numerong ito. Pagkatapos ay nai-print namin ang muling inayos na pagkakasunud-sunod ng vector gamit ang para sa loop





#include

#include

#include

#include

#include

gamit ang namespace std ;

int pangunahing ( )

{

vector < int > isang bagay { 1 , 2 , 3 , 4 , 5 , 6 , 7 , 8 , 9 , 10 } ;

hindi pinirmahan buto = chrono :: system_clock :: ngayon ( ) . time_since_epoch ( ) . bilangin ( ) ;

shuffle ( isang bagay. magsimula ( ) , isang bagay. wakas ( ) , default_random_engine ( buto ) ) ;

cout << 'Ang mga naka-shuffle na elemento ay:' ;

para sa ( int at i : isang bagay )

cout << '' << i ;

cout << endl ;

bumalik 0 ;

}

random_shuffle() sa C++

Ang random_shuffle() Ang function ay random na muling inaayos ang mga elemento sa ibinigay na hanay na may ilang random na piniling numero. Gumagamit ito ng random na generator ng numero upang makabuo ng isang pagkakasunud-sunod ng mga random na numero at pagkatapos ay ginagamit ang mga numerong iyon upang i-shuffle ang mga elemento sa hanay, kaya ang pagkakasunud-sunod ng programa ay mag-iiba sa tuwing pinapatakbo mo ang programa.



Dalawang parameter ang kinakailangan para sa random_shuffle() : ang panimulang posisyon ng hanay ay ang unang parameter, at ang pangalawang parameter ay ang pangwakas na posisyon. Bukod pa rito, random_shuffle() maaaring kumuha ng opsyonal na pangatlong parameter, na isang function na bagay na maaaring magamit upang bumuo ng mga random na numero para sa pag-shuffling ng mga elemento.

Halimbawa

Ang halimbawa sa ibaba ay naglalarawan sa paggawa ng random_shuffle() sa C++. Sa code na ito, lumikha kami ng a bagay na vector na may mga integer na halaga mula 1 hanggang 10 at pagkatapos ay ginamit ang para sa loop upang i-print ang random na shuffled sequence:

#include

#include

gamit ang namespace std ;

int pangunahing ( )

{

vector < int > isang bagay { 1 , 2 , 3 , 4 , 5 , 6 , 7 , 8 , 9 , 10 } ;

srand ( static_cast < hindi pinirmahan int > ( oras ( nullptr ) ) ) ;

random_shuffle ( isang bagay. magsimula ( ) , isang bagay. wakas ( ) ) ;

para sa ( int i : isang bagay ) {

cout << i << '' ;

}

cout << ' \n ' ;



bumalik 0 ;

}

Pagkakaiba sa pagitan ng shuffle() at random_shuffle()

Narito ang mga pangunahing pagkakaiba sa pagitan ng shuffle() at random_shuffle() mga function sa C++.

1: random_shuffle() tumatagal ng isang pares ng mga iterator na kumakatawan sa hanay ng mga elemento upang i-shuffle, habang shuffle() tumatagal ng isang pares ng mga iterator na kumakatawan sa hanay ng mga elemento upang i-shuffle, pati na rin ang isang random na generator ng numero na gagamitin para sa shuffling.

2: random_shuffle() sa pangkalahatan ay hindi gaanong mahusay kaysa sa shuffle() , dahil kailangan nitong bumuo ng sequence ng mga random na numero na gagamitin para sa shuffling.

3: random_shuffle() gumagamit ng panloob na pagpapatupad ng C++ Standard Library ng random number generator upang i-shuffle ang mga elemento, habang shuffle() nagbibigay-daan sa iyong tukuyin ang sarili mong random na generator ng numero na gagamitin para sa pag-shuffling, na nagbibigay sa iyo ng higit na kontrol sa randomness ng shuffling.

4: ang random_shuffle() ay ipinakilala sa C++98 at sinusuportahan ng lahat ng bersyon ng C++ Standard Library, habang shuffle() ay ipinakilala sa C++11 at sinusuportahan lamang ng mga compiler na nagpapatupad ng bersyong iyon ng pamantayan.

Pangwakas na Kaisipan

Ang pagpili sa pagitan ng shuffle() at random_shuffle() depende sa iyong partikular na kaso ng paggamit at mga kinakailangan. Kung kailangan mo ng higit na kontrol sa randomness ng shuffling, o kung gusto mong gumamit ng custom na random number generator, kung gayon shuffle() ay magiging isang mas mahusay na pagpipilian. Sa kabilang banda, kung hindi mo kailangan ang antas ng kontrol na iyon at gusto mo lang ng simpleng paraan para i-shuffle ang mga elemento, kung gayon random_shuffle() maaaring maging sapat.