Iš šio straipsnio sužinosite šių dviejų funkcijų skirtumus ir suprasite, kaip jos veikia.
shuffle () C++ kalboje
The shuffle () funkcija yra integruota C++ funkcija, naudojama atsitiktinai maišyti arba pertvarkyti elementus tam tikrame diapazone. Funkcija deklaruojama
Be to, taip pat reikalingas pasirenkamas trečiasis parametras, kuris yra funkcinis objektas, generuojantis atsitiktinius skaičius, kurie bus naudojami diapazono elementų maišymui.
Kai shuffle () iškviečiama funkcija, ji atsitiktinai pertvarko elementus nurodytame diapazone, naudodama pateiktą atsitiktinių skaičių generatorių. Sumaišymo rezultatas nėra nuspėjamas, ir kiekviena galima elementų permutacija yra vienodai tikėtina.
Pavyzdys
Apsvarstykite toliau pateiktą naudojimo pavyzdį shuffle() funkcija C++ kalboje. Šioje programoje mes sukūrėme vektorių dalykas su sveikųjų skaičių reikšmėmis nuo 0 iki 10. Tada sugeneruojame atsitiktinių skaičių generatorių, kuris kartu su vektoriaus diapazonu perduodamas shuffle () funkcija. The shuffle () funkcija paima skaičių ir sukeičia elementus pagal šį skaičių. Tada mes atspausdinome pertvarkytą vektorių seką naudodami for kilpą
#include
#include
#include
#include
#include
naudojant vardų sritį std ;
tarpt pagrindinis ( )
{
vektorius < tarpt > dalykas { 1 , 2 , 3 , 4 , 5 , 6 , 7 , 8 , 9 , 10 } ;
nepasirašytas sėkla = chrono :: sistemos_laikrodis :: dabar ( ) . laikas_nuo_epochos ( ) . skaičiuoti ( ) ;
maišyti ( dalykas. pradėti ( ) , dalykas. galas ( ) , numatytasis_atsitiktinis_variklis ( sėkla ) ) ;
cout << 'maišyti elementai yra:' ;
dėl ( tarpt & i : dalykas )
cout << '' << i ;
cout << endl ;
grąžinti 0 ;
}
random_shuffle() C++
The random_shuffle() funkcija taip pat atsitiktinai perskirsto elementus duotame diapazone su tam tikru atsitiktinai parinktu skaičiumi. Jis naudoja atsitiktinių skaičių generatorių, kad sugeneruotų atsitiktinių skaičių seką, o tada naudoja tuos skaičius, kad sumaišytų diapazono elementus, todėl programos seka bus skirtinga kiekvieną kartą, kai paleisite programą.
Tam reikalingi du parametrai random_shuffle() : diapazono pradinė padėtis yra pirmasis parametras, o antrasis parametras yra pabaigos padėtis. Be to, random_shuffle() gali paimti pasirenkamą trečiąjį parametrą, kuris yra funkcijos objektas, kurį galima naudoti atsitiktiniams skaičiams sumaišyti elementus.
Pavyzdys
Žemiau pateiktas pavyzdys iliustruoja, kaip veikia random_shuffle() C++ kalboje. Šiame kode sukūrėme a vektorinis dalykas su sveikųjų skaičių reikšmėmis nuo 1 iki 10 ir tada panaudojo už kilpą jei norite spausdinti atsitiktinai sumaišytą seką:
#include#include
naudojant vardų sritį std ;
tarpt pagrindinis ( )
{
vektorius < tarpt > dalykas { 1 , 2 , 3 , 4 , 5 , 6 , 7 , 8 , 9 , 10 } ;
srand ( statinis_perdavimas < nepasirašytas tarpt > ( laikas ( nullptr ) ) ) ;
random_shuffle ( dalykas. pradėti ( ) , dalykas. galas ( ) ) ;
dėl ( tarpt i : dalykas ) {
cout << i << ' ' ;
}
cout << ' \n ' ;
grąžinti 0 ;
}
Skirtumas tarp shuffle() ir random_shuffle()
Štai pagrindiniai skirtumai tarp shuffle () ir random_shuffle() funkcijos C++.
1: random_shuffle() paima porą iteratorių, atspindinčių maišytinų elementų diapazoną shuffle () paima porą iteratorių, nurodančių maišytinų elementų diapazoną, taip pat atsitiktinių skaičių generatorių, kuris naudojamas maišymui.
2: random_shuffle() paprastai yra mažiau efektyvus nei shuffle () , nes ji turi sugeneruoti atsitiktinių skaičių seką, kurią naudotų maišymui.
3: random_shuffle() Elementams maišyti naudoja C++ standartinės bibliotekos vidinį atsitiktinių skaičių generatoriaus įgyvendinimą shuffle () leidžia nurodyti savo atsitiktinių skaičių generatorių, kurį naudosite maišymui, kad galėtumėte geriau valdyti maišymo atsitiktinumą.
4: random_shuffle() buvo pristatytas C++98 ir palaiko visos C++ standartinės bibliotekos versijos, tuo tarpu shuffle () buvo pristatytas C++11 ir palaikomas tik kompiliatorių, kurie įdiegia tą standarto versiją.
Paskutinės mintys
Pasirinkimas tarp shuffle () ir random_shuffle() priklauso nuo konkretaus naudojimo atvejo ir reikalavimų. Jei jums reikia labiau kontroliuoti maišymo atsitiktinumą arba jei norite naudoti pasirinktinį atsitiktinių skaičių generatorių, tada shuffle () būtų geresnis pasirinkimas. Kita vertus, jei jums nereikia tokio valdymo lygio ir norite tik paprasto būdo maišyti elementus, tada random_shuffle() galėtų pakakti.