C++ میں شفل() بمقابلہ random_shuffle()

C My Shfl Bmqabl Random Shuffle



C++ میں، معیاری لائبریری دو افعال فراہم کرتی ہے، شفل() اور بے ترتیب_شفل() جو کنٹینر کے عناصر کو دوبارہ ترتیب دینے کے لیے استعمال ہوتے ہیں۔ اگرچہ دونوں فنکشن ایک ہی مقصد کی تکمیل کرتے ہیں، لیکن ان کے نفاذ اور ان کے بے ترتیب نمبر بنانے کے طریقے میں فرق ہے۔

اس مضمون سے، آپ ان دو افعال کے درمیان فرق تلاش کریں گے اور سمجھیں گے کہ وہ کیسے کام کرتے ہیں۔

شفل() C++ میں

دی شفل() فنکشن ایک بلٹ ان C++ فنکشن ہے جو کسی دی گئی رینج میں عناصر کو تصادفی طور پر شفل یا دوبارہ ترتیب دینے کے لیے استعمال ہوتا ہے۔ فنکشن میں اعلان کیا گیا ہے۔ <الگورتھم> ہیڈر فائل ہے اور اس کے دو دلائل ہیں: رینج کی ابتدائی پوزیشن پہلی دلیل ہے، اور دوسری دلیل اختتامی پوزیشن کی نمائندگی کرتی ہے۔







اس کے علاوہ، یہ ایک اختیاری تیسرا پیرامیٹر بھی لیتا ہے، جو کہ ایک فنکشن آبجیکٹ ہے جو رینج میں عناصر کو شفل کرنے کے لیے استعمال کیے جانے والے بے ترتیب نمبر تیار کرتا ہے۔



جب شفل() فنکشن کہا جاتا ہے، یہ تصادفی طور پر فراہم کردہ بے ترتیب نمبر جنریٹر کا استعمال کرتے ہوئے مخصوص رینج میں عناصر کو دوبارہ ترتیب دیتا ہے۔ شفل کا نتیجہ قابل قیاس نہیں ہے، اور عناصر کی ہر ممکنہ تبدیلی کے ہونے کا یکساں امکان ہے۔



مثال

استعمال کرنے کی ذیل کی مثال پر غور کریں۔ shuffle() فنکشن C++ میں۔ اس پروگرام میں، ہم نے ویکٹر بنایا ہے۔ ایک چیز 0 سے 10 کی عددی اقدار کے ساتھ۔ پھر ہم ایک بے ترتیب نمبر جنریٹر تیار کرتے ہیں، جو پھر ویکٹر کی رینج کے ساتھ شفل() فنکشن دی شفل() فنکشن نمبر لیتا ہے اور اس نمبر کی بنیاد پر عناصر کو تبدیل کرتا ہے۔ پھر ہم نے فار لوپ کا استعمال کرتے ہوئے دوبارہ ترتیب شدہ ویکٹر کی ترتیب کو پرنٹ کیا۔





# شامل کریں

#شامل <ویکٹر>

#include

#شامل <بے ترتیب>

# شامل کریں

نام کی جگہ کا استعمال کرتے ہوئے std ;

int مرکزی ( )

{

ویکٹر < int > ایک چیز { 1 ، 2 ، 3 ، 4 ، 5 ، 6 ، 7 ، 8 ، 9 ، 10 } ;

غیر دستخط شدہ بیج = chrono :: سسٹم_کلاک :: ابھی ( ) . وقت_سے_ایپچ ( ) . شمار ( ) ;

شفل ( ایک چیز. شروع ( ) ، ایک چیز. اختتام ( ) ، ڈیفالٹ_رینڈم_انجن ( بیج ) ) ;

cout << 'تبدیل عناصر ہیں:' ;

کے لیے ( int اور میں : ایک چیز )

cout << '' << میں ;

cout << endl ;

واپسی 0 ;

}

random_shuffle() C++ میں

دی بے ترتیب_شفل() فنکشن بھی تصادفی طور پر دی گئی رینج میں عناصر کو کچھ تصادفی طور پر منتخب کردہ نمبر کے ساتھ دوبارہ ترتیب دیتا ہے۔ یہ بے ترتیب نمبروں کی ترتیب پیدا کرنے کے لیے ایک بے ترتیب نمبر جنریٹر کا استعمال کرتا ہے اور پھر ان نمبروں کو رینج میں موجود عناصر کو شفل کرنے کے لیے استعمال کرتا ہے، لہذا جب بھی آپ پروگرام چلائیں گے پروگرام کی ترتیب مختلف ہوگی۔



کے لیے دو پیرامیٹرز درکار ہیں۔ بے ترتیب_شفل() : رینج کی ابتدائی پوزیشن پہلا پیرامیٹر ہے، اور دوسرا پیرامیٹر اختتامی پوزیشن ہے۔ مزید برآں، بے ترتیب_شفل() اختیاری تیسرا پیرامیٹر لے سکتا ہے، جو ایک فنکشن آبجیکٹ ہے جو عناصر کو بدلنے کے لیے بے ترتیب نمبر بنانے کے لیے استعمال کیا جا سکتا ہے۔

مثال

مندرجہ ذیل مثال کے کام کی وضاحت کرتا ہے بے ترتیب_شفل() C++ میں۔ اس کوڈ میں، ہم نے a ویکٹر چیز 1 سے 10 تک عددی اقدار کے ساتھ اور پھر استعمال کیا۔ لوپ کے لئے تصادفی طور پر شفل شدہ ترتیب کو پرنٹ کرنے کے لیے:

# شامل کریں

#include

نام کی جگہ کا استعمال کرتے ہوئے std ;

int مرکزی ( )

{

ویکٹر < int > ایک چیز { 1 ، 2 ، 3 ، 4 ، 5 ، 6 ، 7 ، 8 ، 9 ، 10 } ;

srand ( static_cast < غیر دستخط شدہ int > ( وقت ( nullptr ) ) ) ;

بے ترتیب_شفل ( ایک چیز. شروع ( ) ، ایک چیز. اختتام ( ) ) ;

کے لیے ( int میں : ایک چیز ) {

cout << میں << ' ;

}

cout << ' \n ' ;



واپسی 0 ;

}

shuffle() اور random_shuffle() کے درمیان فرق

یہاں کے درمیان اہم اختلافات ہیں شفل() اور بے ترتیب_شفل() C++ میں افعال۔

1: بے ترتیب_شفل() شفل کرنے کے لیے عناصر کی رینج کی نمائندگی کرنے والے تکرار کرنے والوں کا ایک جوڑا لیتا ہے، جبکہ شفل() شفل کرنے کے لیے عناصر کی رینج کی نمائندگی کرنے والے تکرار کرنے والوں کا ایک جوڑا لیتا ہے، اسی طرح شفل کرنے کے لیے استعمال کرنے کے لیے ایک بے ترتیب نمبر جنریٹر۔

2: بے ترتیب_شفل() کے مقابلے میں عام طور پر کم موثر ہے شفل() ، جیسا کہ اسے شفلنگ کے لیے استعمال کرنے کے لیے بے ترتیب نمبروں کا ایک سلسلہ بنانا ہوتا ہے۔

3: random_shuffle() عناصر کو شفل کرنے کے لیے C++ سٹینڈرڈ لائبریری کے بے ترتیب نمبر جنریٹر کے اندرونی نفاذ کا استعمال کرتا ہے، جبکہ شفل() آپ کو شفلنگ کے لیے استعمال کرنے کے لیے آپ کے اپنے بے ترتیب نمبر جنریٹر کی وضاحت کرنے کی اجازت دیتا ہے، جس سے آپ کو شفلنگ کی بے ترتیب پن پر مزید کنٹرول ملتا ہے۔

4: random_shuffle() کو C++98 میں متعارف کرایا گیا تھا۔ اور C++ اسٹینڈرڈ لائبریری کے تمام ورژنز کے ذریعے سپورٹ کیا جاتا ہے، جبکہ شفل() C++ 11 میں متعارف کرایا گیا تھا اور اسے صرف کمپائلرز کے ذریعے سپورٹ کیا جاتا ہے جو اس معیار کے ورژن کو نافذ کرتے ہیں۔

حتمی خیالات

کے درمیان انتخاب شفل() اور بے ترتیب_شفل() آپ کے مخصوص استعمال کے کیس اور ضروریات پر منحصر ہے۔ اگر آپ کو شفلنگ کی بے ترتیب پن پر مزید کنٹرول کی ضرورت ہے، یا اگر آپ حسب ضرورت بے ترتیب نمبر جنریٹر استعمال کرنا چاہتے ہیں، تو شفل() ایک بہتر انتخاب ہو گا. دوسری طرف، اگر آپ کو اس سطح کے کنٹرول کی ضرورت نہیں ہے اور آپ عناصر کو تبدیل کرنے کا ایک آسان طریقہ چاہتے ہیں، تو بے ترتیب_شفل() کافی ہو سکتا ہے.