Из овог чланка ћете пронаћи разлике између ове две функције и разумети како оне функционишу.
схуффле() у Ц++
Тхе мешање() функција је уграђена Ц++ функција која се користи за насумично мешање или преуређивање елемената у датом опсегу. Функција је декларисана у <алгоритам> заглавље датотеке и има два аргумента: почетна позиција опсега је први аргумент, а други аргумент представља крајњу позицију.
Поред тога, он такође узима опциони трећи параметар, који је функционални објекат који генерише насумичне бројеве који ће се користити за мешање елемената у опсегу.
Када мешање() функција, она насумично мења редослед елемената у наведеном опсегу користећи обезбеђени генератор случајних бројева. Резултат мешања није предвидљив и свака могућа пермутација елемената је подједнако вероватна.
Пример
Размотрите доњи пример коришћења схуффле() функција у Ц++. У овом програму смо креирали вектор ствар са целобројним вредностима од 0 до 10. Затим генеришемо генератор случајних бројева, који се затим преноси заједно са опсегом вектора у мешање() функција. Тхе мешање() функција узима број и мења елементе на основу овог броја. Затим смо одштампали преуређену векторску секвенцу користећи фор петљу
#инцлуде <иостреам>
#инцлуде <вектор>
#инцлуде <алгоритам>
#инцлуде <случајно>
#инцлуде <цхроно>
користећи простор имена стд ;
инт главни ( )
{
вектор < инт > ствар { 1 , 2 , 3 , 4 , 5 , 6 , 7 , 8 , 9 , 10 } ;
непотписан семе = цхроно :: систем_цлоцк :: Сада ( ) . тиме_синце_епоцх ( ) . цоунт ( ) ;
мешање ( ствар. започети ( ) , ствар. крај ( ) , дефаулт_рандом_енгине ( семе ) ) ;
цоут << 'промешани елементи су:' ;
за ( инт & и : ствар )
цоут << '' << и ;
цоут << ендл ;
повратак 0 ;
}
рандом_схуффле() у Ц++
Тхе рандом_схуффле() функција такође насумично преуређује елементе у датом опсегу са неким насумично изабраним бројем. Користи генератор случајних бројева за генерисање низа насумичних бројева, а затим користи те бројеве за мешање елемената у опсегу, тако да ће редослед програма бити другачији сваки пут када покренете програм.
Потребна су два параметра за рандом_схуффле() : почетна позиција опсега је први параметар, а други параметар је крајња позиција. Поред тога, рандом_схуффле() може узети опциони трећи параметар, који је функционални објекат који се може користити за генерисање случајних бројева за мешање елемената.
Пример
Пример у наставку илуструје рад рандом_схуффле() у Ц++. У овом коду смо креирали а векторска ствар са целим вредностима од 1 до 10, а затим користи за петљу за штампање насумично измешаног низа:
#инцлуде <иостреам>#инцлуде <алгоритам>
користећи простор имена стд ;
инт главни ( )
{
вектор < инт > ствар { 1 , 2 , 3 , 4 , 5 , 6 , 7 , 8 , 9 , 10 } ;
сранд ( статиц_цаст < непотписан инт > ( време ( нуллптр ) ) ) ;
рандом_схуффле ( ствар. започети ( ) , ствар. крај ( ) ) ;
за ( инт и : ствар ) {
цоут << и << ' ' ;
}
цоут << ' \н ' ;
повратак 0 ;
}
Разлика између схуффле() и рандом_схуффле()
Ево кључних разлика између мешање() и рандом_схуффле() функције у Ц++.
1: рандом_схуффле() узима пар итератора који представљају опсег елемената за мешање, док мешање() узима пар итератора који представљају опсег елемената за мешање, као и генератор случајних бројева који се користи за мешање.
2: рандом_схуффле() генерално је мање ефикасан од мешање() , јер мора да генерише низ насумичних бројева који ће се користити за мешање.
3: рандом_схуффле() користи интерну имплементацију генератора случајних бројева Ц++ стандардне библиотеке за мешање елемената, док мешање() омогућава вам да наведете сопствени генератор случајних бројева који ћете користити за мешање, дајући вам већу контролу над случајношћу мешања.
4: рандом_схуффле() је уведен у Ц++98 и подржавају га све верзије Ц++ стандардне библиотеке, док мешање() је уведен у Ц++11 и подржавају га само преводиоци који имплементирају ту верзију стандарда.
Последње мисли
Избор између мешање() и рандом_схуффле() зависи од вашег специфичног случаја употребе и захтева. Ако вам је потребна већа контрола над насумичношћу мешања, или ако желите да користите прилагођени генератор случајних бројева, онда мешање() био би бољи избор. С друге стране, ако вам не треба тај ниво контроле и само желите једноставан начин да измешате елементе, онда рандом_схуффле() могло бити довољно.