U ovom ćete članku pronaći razlike između ove dvije funkcije i razumjeti kako rade.
shuffle() u C++
The miješanje () funkcija je ugrađena C++ funkcija koja se koristi za nasumično miješanje ili preraspoređivanje elemenata u zadanom rasponu. Funkcija je deklarirana u
Osim toga, također uzima neobavezan treći parametar, koji je funkcijski objekt koji generira nasumične brojeve koji se koriste za miješanje elemenata u rasponu.
Kada miješanje () Pozove se funkcija, ona nasumično mijenja redoslijed elemenata u navedenom rasponu pomoću dobivenog generatora slučajnih brojeva. Rezultat miješanja nije predvidljiv, a svaka moguća permutacija elemenata jednako je vjerojatna.
Primjer
Razmotrite donji primjer korištenja funkcija shuffle(). u C++. U ovom programu smo kreirali vektor stvar s cjelobrojnim vrijednostima od 0 do 10. Zatim generiramo generator slučajnih brojeva, koji se zatim prosljeđuje zajedno s rasponom vektora u miješanje () funkcija. The miješanje () funkcija uzima broj i mijenja elemente na temelju tog broja. Zatim smo ispisali preuređenu vektorsku sekvencu pomoću for petlje
#include
#uključi
#include
#uključi
#include
koristeći prostor imena std ;
int glavni ( )
{
vektor < int > stvar { 1 , 2 , 3 , 4 , 5 , 6 , 7 , 8 , 9 , 10 } ;
nepotpisan sjeme = krono :: sustav_sat :: sada ( ) . vrijeme_od_epohe ( ) . računati ( ) ;
miješati se ( stvar. početi ( ) , stvar. kraj ( ) , zadani_nasumični_motor ( sjeme ) ) ;
cout << 'izmiješani elementi su:' ;
za ( int i ja : stvar )
cout << ' ' << ja ;
cout << endl ;
povratak 0 ;
}
random_shuffle() u C++
The random_shuffle() funkcija također nasumično preuređuje elemente u zadanom rasponu s nekim nasumično odabranim brojem. Koristi generator slučajnih brojeva za generiranje niza slučajnih brojeva, a zatim koristi te brojeve za miješanje elemenata u rasponu, tako da će slijed programa biti drugačiji svaki put kada pokrenete program.
Potrebna su dva parametra za random_shuffle() : početni položaj raspona je prvi parametar, a drugi parametar je krajnji položaj. Dodatno, random_shuffle() može uzeti izborni treći parametar, koji je funkcijski objekt koji se može koristiti za generiranje nasumičnih brojeva za miješanje elemenata.
Primjer
Donji primjer ilustrira rad random_shuffle() u C++. U ovom kodu stvorili smo a vektorska stvar s cijelim brojevima od 1 do 10 i zatim upotrijebio za petlju za ispis nasumično izmiješanog niza:
#include#include
koristeći prostor imena std ;
int glavni ( )
{
vektor < int > stvar { 1 , 2 , 3 , 4 , 5 , 6 , 7 , 8 , 9 , 10 } ;
srand ( statično_cast < nepotpisan int > ( vrijeme ( nullptr ) ) ) ;
nasumično_namještanje ( stvar. početi ( ) , stvar. kraj ( ) ) ;
za ( int ja : stvar ) {
cout << ja << ' ' ;
}
cout << ' \n ' ;
povratak 0 ;
}
Razlika između shuffle() i random_shuffle()
Ovdje su ključne razlike između miješanje () i random_shuffle() funkcije u C++.
1: random_shuffle() uzima par iteratora koji predstavljaju raspon elemenata za miješanje, dok miješanje () uzima par iteratora koji predstavljaju raspon elemenata za miješanje, kao i generator slučajnih brojeva koji se koristi za miješanje.
2: random_shuffle() općenito je manje učinkovit od miješanje () , budući da mora generirati niz nasumičnih brojeva za korištenje za miješanje.
3: random_shuffle() koristi internu implementaciju generatora slučajnih brojeva standardne biblioteke C++ za miješanje elemenata, dok miješanje () omogućuje vam da odredite vlastiti generator slučajnih brojeva koji ćete koristiti za miješanje, dajući vam veću kontrolu nad slučajnošću miješanja.
4: random_shuffle() uveden je u C++98 i podržavaju ga sve verzije standardne biblioteke C++, dok miješanje () uveden je u C++11 i podržavaju ga samo prevoditelji koji implementiraju tu verziju standarda.
Završne misli
Izbor između miješanje () i random_shuffle() ovisi o vašem specifičnom slučaju upotrebe i zahtjevima. Ako vam je potrebna veća kontrola nad slučajnošću miješanja ili ako želite koristiti prilagođeni generator slučajnih brojeva, tada miješanje () bio bi bolji izbor. S druge strane, ako ne trebate tu razinu kontrole i samo želite jednostavan način miješanja elemenata, random_shuffle() moglo biti dovoljno.