এলোমেলো সংখ্যা উৎপন্ন করা

PHP:
এলোমেলো সংখ্যা উৎপন্ন করা

কিভাবে:

PHP যাদৃচ্ছিক সংখ্যা তৈরির জন্য কয়েকটি ফাংশন প্রদান করে, তবে সবচেয়ে সাধারণভাবে ব্যবহৃত হল rand(), mt_rand(), এবং ক্রিপ্টোগ্রাফিক উদ্দেশ্যে random_int()

0 থেকে getrandmax() (যা rand() দ্বারা ফেরত দেওয়া সবচেয়ে বড় সম্ভাব্য মান) পর্যন্ত একটি সাধারণ যাদৃচ্ছিক সংখ্যা তৈরি করতে আপনি ব্যবহার করতে পারেন:

echo rand();

আরও নির্দিষ্ট পরিসরের জন্য, যেমন 1 থেকে 100 পর্যন্ত:

echo rand(1, 100);

তবে, গতি এবং যাদৃচ্ছিকতার জন্য mt_rand() অধিক ভালো পছন্দ:

echo mt_rand(1, 100);

উভয়ের আউটপুট যাদৃচ্ছিকভাবে 1 থেকে 100 এর মধ্যে কিছু হতে পারে, যেমন 42.

ক্রিপ্টোগ্রাফিক বা নিরাপত্তা প্রসঙ্গে, যেখানে অনুমানাতীত হওয়া অপরিহার্য, random_int() পছন্দনীয় পছন্দ কারণ এটি ক্রিপ্টোগ্রাফিকভাবে নিরাপদ প্সিউডো-যাদৃচ্ছিক পূর্ণসংখ্যা উৎপন্ন করে:

echo random_int(1, 100);

আবার, আউটপুট যাদৃচ্ছিকভাবে 1 থেকে 100 এর মধ্যে হতে পারে, যেমন 84, কিন্তু ইহা যাদৃচ্ছিকতার একটি শক্তিশালী গ্যারান্টি দেয়।

গভীরে ডুব:

rand() ফাংশন PHP এর প্রাথমিক সংস্করণ থেকে রয়েছে, যাদৃচ্ছিক সংখ্যা তৈরির প্রাথমিক পদ্ধতি হিসেবে কাজ করে। তবে, উচ্চ মাত্রার যাদৃচ্ছিকতা প্রয়োজন হলে এটি সর্বোত্তম পছন্দ নয় এর তুলনামূলকভাবে পূর্বানুমেয় অ্যালগরিদমের কারণে।

PHP 4 এ mt_rand() চালু হয়, যা মার্সেন টুইস্টার অ্যালগরিদমের ওপর ভিত্তি করে - গতি এবং এর তৈরি করতে পারে এমন যাদৃচ্ছিকতার দিক দিয়ে rand() এর চেয়ে অনেক শ্রেষ্ঠ। অচিরেই এটি অ-ক্রিপ্টোগ্রাফিক প্রয়োজনীয়তার জন্য পছন্দনীয় বিকল্প হয়ে উঠেছিল।

নিরাপত্তা-সংবেদনশীল অ্যাপ্লিকেশনের জন্য, PHP 7 এ random_int() চালু হয়েছিল যা সিস্টেমের যাদৃচ্ছিক নম্বর জেনারেটর থেকে যাদৃচ্ছিক বাইটস ব্যবহার করে ক্রিপ্টোগ্রাফিকভাবে নিরাপদ প্সিউডো-যাদৃচ্ছিক পূর্ণসংখ্যা উৎপন্ন করে। এটি rand() বা mt_rand() এর চেয়ে অনেক বেশি নিরাপদ, তাই টোকেন, চাবি, বা অন্যান্য উপাদান তৈরির জন্য, যেখানে অনুমানাতীতা নিরাপত্তা দুর্বলতার কারণ হতে পারে, এটি সর্বোত্তম পছন্দ।

এই উন্নতিসমূহের পরেও, অ্যাপ্লিকেশনের প্রেক্ষাপট বুঝে সঠিক ফাংশন নির্বাচন করা অপরিহার্য। সাধারণ ব্যবহারের জন্য mt_rand() যথেষ্ট, তবে যা কিছু লক্ষ্য বা শোষণ করা হতে পারে, তার জন্য random_int() পথ অনুসরণ করে, যাদৃচ্ছিকতা এবং নিরাপত্তা উভয়ই প্রদান করে।