র‍্যান্ডম নম্বর জেনারেটর

আপনার ব্রাউজারের ক্রিপ্টোগ্রাফিক জেনারেটর (crypto.getRandomValues()) ব্যবহার করে যেকোনো রেঞ্জে নিরপেক্ষ, পক্ষপাতহীন র‍্যান্ডম সংখ্যা তৈরি করুন — ঐচ্ছিক পুনরাবৃত্তি-বিহীন, দশমিক ও সাজানোর সুবিধা সহ। কিছুই আপলোড হয় না। সর্বশেষ পর্যালোচনা 2026-06-19।

প্রিসেট:

র‍্যান্ডমনেস কীভাবে কাজ করে

প্রতিটি সংখ্যা crypto.getRandomValues() থেকে তৈরি হয়, যা ব্রাউজারের ক্রিপ্টোগ্রাফিকভাবে নিরাপদ র‍্যান্ডম উৎস — একই এন্ট্রপি যা আপনার অপারেটিং সিস্টেম এনক্রিপশন কী-এর জন্য ব্যবহার করে। এটি সিড করা যায় না এবং এর অনুমান বা পুনরাবৃত্তিও করা যায় না।

পূর্ণসংখ্যার জন্য আমরা রিজেকশন স্যাম্পলিং ব্যবহার করি: আমরা একটি 32-বিট মান টানি এবং সেই ছোট “অবশিষ্ট” অঞ্চলে পড়া প্রতিটি টানকে বাতিল করি যা অন্যথায় কিছু সংখ্যাকে অন্যদের চেয়ে সামান্য বেশি সম্ভাব্য করে তুলত। ফলাফল একটি অভিন্ন বণ্টন — আপনার রেঞ্জের প্রতিটি মান ঠিক সমান সম্ভাবনার, এমনকি যখন রেঞ্জ দুইয়ের ঘাত নয় তখনও। এটিই সেই পক্ষপাত যা একটি সরল Math.random() × range পদ্ধতি নীরবে নিয়ে আসে।

সাধারণ ব্যবহার

ব্যবহারপ্রস্তাবিত সেটিং
গিভঅ্যাওয়ে / র‍্যাফল বিজয়ীরেঞ্জ 1 থেকে অংশগ্রহণকারীর সংখ্যা, কতগুলো = বিজয়ীর সংখ্যা, অনন্য চালু
পাশা ফেলা1 থেকে 6 (বা টেবিলটপ গেমের জন্য 1 থেকে 20)
মুদ্রা টস0 থেকে 1 (0 = হেড, 1 = টেল)
লটারি-ধরনের ড্র1 থেকে 49, কতগুলো = 6, অনন্য চালু
প্রতিস্থাপন ছাড়া র‍্যান্ডম স্যাম্পল1 থেকে জনসংখ্যার আকার, কতগুলো = স্যাম্পলের আকার, অনন্য চালু
র‍্যান্ডম দশমিক (যেমন 0–1)সর্বনিম্ন 0, সর্বোচ্চ 1, দশমিক স্থান 2–4

জেনে রাখা ভালো

সত্যিকারের র‍্যান্ডম বনাম ছদ্ম-র‍্যান্ডম

কম্পিউটার নির্ধারণবাদী যন্ত্র, তাই প্রকৃত র‍্যান্ডমনেস তৈরি করা আশ্চর্যজনকভাবে কঠিন। দুটি মৌলিকভাবে ভিন্ন পদ্ধতি আছে। একটি সত্যিকারের র‍্যান্ডম নম্বর জেনারেটর (TRNG) কোনো অপ্রত্যাশিত ভৌত ঘটনা পরিমাপ করে — ইলেকট্রনিক তাপীয় বা শট নয়েজ, বায়ুমণ্ডলীয় রেডিও নয়েজ, তেজস্ক্রিয় ক্ষয়ের সময়, বা বিম স্প্লিটারে আঘাত হানা ফোটনের মতো কোয়ান্টাম প্রভাব — এবং তা বিটে রূপান্তরিত করে। র‍্যান্ডমনেস প্রকৃতি থেকে আসে, তাই আউটপুট পুনরাবৃত্তি বা অনুমান করা যায় না, তবে তা সংগ্রহ করা তুলনামূলকভাবে ধীর।

একটি ছদ্ম-র‍্যান্ডম সংখ্যা জেনারেটর (PRNG) হলো একটি গাণিতিক সূত্র যা সিড নামক একটি প্রাথমিক মান থেকে শুরু হয় এবং একটি দীর্ঘ ক্রম তৈরি করে যা র‍্যান্ডম দেখায়। এটি দ্রুত ও সুবিধাজনক, কিন্তু সম্পূর্ণ নির্ধারণবাদী: যে কেউ সিড ও অ্যালগরিদম জানে সে ঠিক একই ক্রম পুনরায় তৈরি করতে পারে, এবং ক্রমটি অবশেষে একটি দৈর্ঘ্যের পরে পুনরাবৃত্ত হয় যাকে তার পর্যায়কাল বলে। পুনরুৎপাদনযোগ্যতা কখনও কখনও একটি সুবিধা — এটি বিজ্ঞানীদের কোনো সিমুলেশন হুবহু পুনরায় চালাতে দেয় — কিন্তু যখন অপ্রত্যাশিততা গুরুত্বপূর্ণ তখন এটি একটি মারাত্মক দুর্বলতা।

আধুনিক সিস্টেম একটি সংকর পদ্ধতি ব্যবহার করে: একটি হার্ডওয়্যার এন্ট্রপি উৎস একটি দ্রুত, উচ্চ-মানের ছদ্ম-র‍্যান্ডম অ্যালগরিদমকে সিড করে। ঠিক এটাই আপনার ব্রাউজার করে। এই পৃষ্ঠাটি চালানো crypto.getRandomValues() কলটি আপনার অপারেটিং সিস্টেমের এন্ট্রপি পুল থেকে মান নেয়, যা ক্রমাগত হার্ডওয়্যার নয়েজ থেকে পূর্ণ হয়, তাই এটি যে সংখ্যাগুলো তৈরি করে তাতে TRNG-এর অপ্রত্যাশিততা এবং PRNG-এর গতি দুটোই থাকে।

ছদ্ম-র‍্যান্ডম সংখ্যার পিছনের অ্যালগরিদম

সব PRNG একরকম নয়। কয়েক দশকের গবেষণা খুব ভিন্ন মান ও গতির অ্যালগরিদম পরিবার তৈরি করেছে:

অ্যালগরিদমবছর / রচয়িতামন্তব্য
লিনিয়ার কনগ্রুয়েনশিয়াল (LCG)1950-এর দশক থেকেখুব দ্রুত, খুব ছোট স্টেট, কিন্তু পরিসংখ্যানগতভাবে দুর্বল — পরপর মান শনাক্তযোগ্য হাইপারপ্লেনে পড়ে। এখনও মৌলিক rand() ফাংশনে সাধারণ।
মার্সেন টুইস্টার1997, মাতসুমোতো ও নিশিমুরা219937−1-এর বিশাল পর্যায়কাল এবং ভালো পরিসংখ্যানগত মান; Python, R ও অনেক ভাষার ডিফল্ট — কিন্তু ক্রিপ্টোগ্রাফিকভাবে নিরাপদ নয়
Xorshift2003, জর্জ মার্সাগ্লিয়াঅত্যন্ত দ্রুত বিট-শিফটিং জেনারেটর; কোনো অ-রৈখিক ধাপের সাথে যুক্ত হলে কঠিন পরীক্ষা পাস করে।
PCG2014, মেলিসা ও'নীলএকটি পারমিউটেড কনগ্রুয়েনশিয়াল পরিবার যা একটি দ্রুত LCG কোরকে আউটপুট স্ক্র্যাম্বলের সাথে যুক্ত করে — ছোট, দ্রুত ও পরিসংখ্যানগতভাবে চমৎকার।

একটি সাধারণ ভুল ধারণা হলো মার্সেন টুইস্টার, তার জ্যোতির্বৈজ্ঞানিক পর্যায়কাল ও শক্তিশালী পরীক্ষার ফলাফলের কারণে, নিরাপত্তার জন্য নিরাপদ হওয়া উচিত। তা নয়: এর মাত্র 624টি আউটপুট দেখে, একজন আক্রমণকারী এর অভ্যন্তরীণ স্টেট পুনরুদ্ধার করে প্রতিটি ভবিষ্যৎ মান অনুমান করতে পারে। পরিসংখ্যানগত মান ও ক্রিপ্টোগ্রাফিক নিরাপত্তা ভিন্ন প্রয়োজন, এবং এই পার্থক্যকে ঘিরেই এই টুলটি তৈরি।

কোনো জেনারেটরকে "ক্রিপ্টোগ্রাফিকভাবে নিরাপদ" কী করে তোলে

একটি ক্রিপ্টোগ্রাফিকভাবে নিরাপদ PRNG (CSPRNG)-কে কেবল পরিসংখ্যানগত পরীক্ষা পাস করার চেয়ে অনেক কঠোর মান পূরণ করতে হয়। দুটি বৈশিষ্ট্য একে সংজ্ঞায়িত করে। পরবর্তী-বিট পরীক্ষা (next-bit test): এ পর্যন্ত প্রতিটি আউটপুট বিট দেখে, কোনো দক্ষ অ্যালগরিদম পরবর্তী বিট মুদ্রা-টসের সম্ভাবনার চেয়ে ভালোভাবে অনুমান করতে পারে না। এবং স্টেট-কম্প্রোমাইজ প্রতিরোধ: এমনকি এর অভ্যন্তরীণ স্টেট কোনোভাবে উন্মোচিত হলেও, আক্রমণকারী তবুও এটি আগে তৈরি করা র‍্যান্ডম সংখ্যাগুলো পুনর্গঠন করতে পারে না। JavaScript-এর Math.random()-এর মতো একটি অ-ক্রিপ্টোগ্রাফিক জেনারেটর উভয়েই ব্যর্থ হয় — এটি গেম ও অ্যানিমেশনে গতির জন্য তৈরি, এর স্টেট এর আউটপুট থেকে পুনরুদ্ধার করা যায়, এবং স্পেসিফিকেশন র‍্যান্ডমনেসের কোনো নির্দিষ্ট মানের নিশ্চয়তাও দেয় না।

যুক্তরাষ্ট্রের ন্যাশনাল ইনস্টিটিউট অফ স্ট্যান্ডার্ডস অ্যান্ড টেকনোলজি (NIST) অনুমোদিত ডিজাইনের জন্য মান প্রকাশ করে, NIST SP 800-90A, যা যাচাই করা নির্ধারণবাদী র‍্যান্ডম-বিট জেনারেটর নির্দিষ্ট করে। এই ক্ষেত্রে একটি বিখ্যাত সতর্কতামূলক কাহিনিও আছে: সেই মানের পুরনো সংস্করণের একটি অ্যালগরিদম, Dual_EC_DRBG, পরে একটি সম্ভাব্য ব্যাকডোর ধারণ করছে বলে দেখা যায় এবং তা প্রত্যাহার করা হয় — এটি মনে করিয়ে দেয় যে কোনো জেনারেটরের ডিজাইন, কেবল তার আউটপুট নয়, নির্ধারণ করে তাকে বিশ্বাস করা যায় কিনা। এখানে ব্যবহৃত crypto.getRandomValues() উৎসটি অপারেটিং সিস্টেমের যাচাই করা CSPRNG-এর প্রতি ব্রাউজারের ইন্টারফেস।

একটি নিরপেক্ষ রেঞ্জ দেখতে যতটা কঠিন লাগে তার চেয়ে কঠিন কেন

ধরুন আপনি 1 থেকে 6 পর্যন্ত একটি নিরপেক্ষ সংখ্যা চান এবং আপনার কাছে একটি জেনারেটর আছে যা একটি র‍্যান্ডম বাইট (0–255) ফেরত দেয়। অলস পদ্ধতি হলো অবশিষ্ট নেওয়া: byte % 6 + 1। কিন্তু 256, 6-এর গুণিতক নয়। মান 0–251 ছয়টি বাকেটে 42-42 করে সমানভাবে ভাগ হয়, কিন্তু বাকি চারটি মান 252–255, 1, 2, 3 ও 4-এর বাকেটে পড়ে — তাই সেই চারটি ফলাফল 5 ও 6-এর তুলনায় সামান্য বেশি বার আসে। এটি মডুলো পক্ষপাত, এবং যদিও পাশার জন্য এই ঝোঁক ক্ষুদ্র, এটি রেঞ্জের সাথে বাড়ে এবং ক্রিপ্টোগ্রাফিক কী, বড় লটারি বা বৈজ্ঞানিক স্যাম্পলিং-এর জন্য গুরুত্বপূর্ণ হতে পারে।

সমাধান হলো রিজেকশন স্যাম্পলিং: আপনার রেঞ্জের সেই বৃহত্তম গুণিতক নির্ধারণ করুন যা জেনারেটরের আউটপুটে ধরে (এখানে, 252), এবং কেবল সেই মানকে বাতিল করুন — প্রত্যাখ্যান করে আবার টানুন — যা তার সমান বা তার উপরে পড়ে। টিকে থাকা প্রতিটি মান ঠিক একটি ফলাফলের সাথে সংযুক্ত হয়, তাই প্রতিটি ফলাফল ঠিক সমান সম্ভাবনার হয়। এই জেনারেটর প্রতিটি পূর্ণসংখ্যার জন্য একটি সম্পূর্ণ 32-বিট টানে এই কৌশল প্রয়োগ করে, এই কারণেই এর রেঞ্জ গাণিতিকভাবে "যথেষ্ট কাছাকাছি"-র বদলে অভিন্ন হয়।

মানুষ র‍্যান্ডম হতে কেন খারাপ

"মনে একটি সংখ্যা ভাবুন" বলা লোভনীয়, কিন্তু মানুষ অত্যন্ত খারাপ র‍্যান্ডম জেনারেটর, আর ঠিক এই কারণেই এর মতো একটি টুল বিদ্যমান। 1 থেকে 10 পর্যন্ত একটি অঙ্ক বাছতে বললে, অন্য যেকোনো অঙ্কের তুলনায় অনেক বেশি মানুষ 7 বাছে — এটি সবচেয়ে "র‍্যান্ডম" মনে হয় কারণ এটি বিজোড়, মৌলিক এবং গোল প্রান্ত থেকে দূরে বসে। মানুষ একই মান পরপর দুবার পুনরাবৃত্তি করা অজান্তেই এড়ায় এবং উঁচু-নিচু পছন্দ পর্যায়ক্রমে বদল করে, কারণ পুনরাবৃত্তির একটি সত্যিকারের ধারা অ-র‍্যান্ডম মনে হয়, যদিও সত্যিকারের র‍্যান্ডমনেস এমন ধারা সব সময়ই তৈরি করে। এই একই প্রবণতা জুয়াড়ির অপযুক্তি-কে উসকে দেয়: এই ভুল বিশ্বাস যে কয়েকটি হেডের পরে এখন একটি টেল "বাকি"। প্রতিটি স্বাধীন টানের কোনো স্মৃতি নেই, তাই একটি নিরপেক্ষ জেনারেটর সানন্দে এমন গুচ্ছ ও ধারা তৈরি করবে যা অনুমান দিয়ে সম্পাদনা করা কোনো ব্যক্তি কখনও লিখবে না। যদি আপনার এমন একটি ফলাফল দরকার যা রক্ষণযোগ্যভাবে নিরপেক্ষ — কোনো গিভঅ্যাওয়ে, স্যাম্পলিং সিদ্ধান্ত বা টাই-ব্রেকের জন্য — তবে একটি অভিন্ন যন্ত্র-টান সেই লুকানো মানবীয় পক্ষপাত সম্পূর্ণভাবে সরিয়ে দেয়।

র‍্যান্ডমনেস কীভাবে পরীক্ষা করা হয়

আপনি কোনো সসীম ক্রমকে র‍্যান্ডম প্রমাণ করতে পারবেন না, কিন্তু আপনি একটি জেনারেটরকে পরিসংখ্যানগত পরীক্ষার শ্রেণির অধীনে রাখতে পারেন যা সেই প্যাটার্নগুলো ধরার চেষ্টা করে যা কোনো সত্যিকারের র‍্যান্ডম উৎসে থাকে না। ক্লাসিক সুইট হলো জর্জ মার্সাগ্লিয়ার Diehard পরীক্ষা (পরে Dieharder হিসেবে সম্প্রসারিত); সবচেয়ে কঠিন আধুনিক শ্রেণি হলো পিয়ের লেকুইয়ারের TestU01, যার "BigCrush" সেট একশোর বেশি পরীক্ষা চালায়। NIST ক্রিপ্টোগ্রাফির জন্য ব্যবহৃত জেনারেটরকে বিশেষভাবে লক্ষ্য করে নিজস্ব পরিসংখ্যানগত পরীক্ষা সুইট প্রকাশ করে। এদের অনেকের নিচে বিনয়ী কাই-স্কোয়ার পরীক্ষা বসে থাকে, যা যাচাই করে দেখা যাওয়া কম্পাঙ্ক (প্রতিটি মান কতবার আসে) সেই অভিন্ন বণ্টনের সাথে মেলে কিনা যা আপনি সংযোগবশত আশা করেন। এই পরীক্ষাগুলো পাস করা প্রয়োজনীয় কিন্তু, উপরে উল্লিখিত মতো, ক্রিপ্টোগ্রাফিক ব্যবহারের জন্য যথেষ্ট নয়।

বাস্তব জগতে র‍্যান্ডম সংখ্যা

র‍্যান্ডম সংখ্যা জেনারেশন নীরবে বিশাল পরিসরের কার্যকলাপের ভিত্তি গড়ে:

প্রায়শই জিজ্ঞাসিত প্রশ্ন

এই র‍্যান্ডম নম্বর জেনারেটর কি সত্যিই র‍্যান্ডম?
এটি আপনার ব্রাউজারের crypto.getRandomValues() API ব্যবহার করে, যা অপারেটিং সিস্টেমের ক্রিপ্টোগ্রাফিকভাবে নিরাপদ ছদ্ম-র‍্যান্ডম সংখ্যা জেনারেটর (CSPRNG) থেকে মান নেয় — একই এন্ট্রপি উৎস যা পাসওয়ার্ড ম্যানেজার ও TLS ব্যবহার করে। Math.random()-এর বিপরীতে, এটি অপ্রত্যাশিত এবং সিড করা যায় না, তাই ফলাফল পুনরায় তৈরি বা অনুমান করা যায় না। পূর্ণসংখ্যার জন্য আমরা রিজেকশন স্যাম্পলিংও প্রয়োগ করি যাতে আপনার রেঞ্জের প্রতিটি মান ঠিক সমান সম্ভাবনার হয় (কোনো মডুলো পক্ষপাত নয়)।
আমি কি এটি কোনো গিভঅ্যাওয়ে বা র‍্যাফলের জন্য নিরপেক্ষভাবে ব্যবহার করতে পারি?
হ্যাঁ। প্রতিটি অংশগ্রহণকারীকে একটি সংখ্যা দিন (1 থেকে N), রেঞ্জকে 1–N-এ সেট করুন, আপনি যদি একাধিক বিজয়ী বাছাই করেন তবে “অনন্য (পুনরাবৃত্তি নয়)” চালু করুন, এবং জেনারেট করুন। যেহেতু রেঞ্জের প্রতিটি মান সমান সম্ভাবনার এবং ড্র নিরপেক্ষ, এটি একটি নিরপেক্ষ নির্বাচন। সম্পূর্ণ স্বচ্ছতার জন্য আপনি ড্রটি স্ক্রিন-রেকর্ড করতে পারেন বা অংশগ্রহণকারীদের সামনে জেনারেট করতে পারেন — সার্ভারে কিছুই পাঠানো হয় না, তাই ফলাফল আপনার ডিভাইসে লাইভ তৈরি হয়।
“অনন্য (পুনরাবৃত্তি নয়)” কী করে?
এটি বন্ধ থাকলে, প্রতিটি সংখ্যা স্বাধীনভাবে টানা হয়, তাই একই মান একাধিকবার আসতে পারে (যেমন বারবার পাশা ফেলা)। এটি চালু থাকলে, আউটপুটের প্রতিটি সংখ্যা আলাদা হয় — লটারি ড্র, আলাদা বিজয়ী বাছাই, বা প্রতিস্থাপন ছাড়া স্যাম্পলিং-এর জন্য উপযোগী। আপনি যদি রেঞ্জে যত সংখ্যা ধরতে পারে তার চেয়ে বেশি অনন্য সংখ্যা চান (যেমন 1 এবং 5-এর মধ্যে 10টি অনন্য সংখ্যা), তবে সংখ্যাটি স্বয়ংক্রিয়ভাবে রেঞ্জের আকার পর্যন্ত সীমিত করা হয়।
এটি Math.random() থেকে কীভাবে আলাদা?
Math.random() একটি দ্রুত, অ-ক্রিপ্টোগ্রাফিক জেনারেটর যা অ্যানিমেশন বা গুরুত্বহীন তালিকা এলোমেলো করার মতো কাজের জন্য তৈরি; এর আউটপুট অপ্রত্যাশিত হওয়ার নিশ্চয়তা দেয় না এবং মডুলো অপারেটর দিয়ে কোনো রেঞ্জে স্কেল করলে পক্ষপাতদুষ্ট হতে পারে। crypto.getRandomValues() ক্রিপ্টোগ্রাফিকভাবে নিরাপদ, এবং আমাদের রিজেকশন-স্যাম্পলিং ধাপ মডুলো পক্ষপাত সম্পূর্ণভাবে সরিয়ে দেয়, তাই দুইয়ের ঘাত নয় এমন রেঞ্জের জন্যও প্রতিটি মান ঠিক সমান সম্ভাবনার থাকে।
এটি কি দশমিক সংখ্যা তৈরি করতে পারে?
হ্যাঁ। “দশমিক স্থান”-কে 1–4-এ সেট করুন এবং জেনারেটর আপনার রেঞ্জ জুড়ে অভিন্ন দশমিক মান ফেরত দেয় (উদাহরণস্বরূপ 0 এবং 1-এর মধ্যে 4 দশমিকের একটি র‍্যান্ডম সংখ্যা)। 0 দশমিক স্থানে এটি পক্ষপাতহীন পূর্ণসংখ্যা পথ ব্যবহার করে পূর্ণসংখ্যা ফেরত দেয়।
আমার ব্রাউজার থেকে কি কিছু বাইরে যায়?
না। প্রতিটি সংখ্যা আপনার ডিভাইসের CPU ও OS এন্ট্রপি ব্যবহার করে স্থানীয়ভাবে তৈরি হয়। কিছুই আপলোড, প্রেরণ বা লগ করা হয় না, এবং লোড হয়ে গেলে পৃষ্ঠাটি অফলাইনেও কাজ করতে থাকে।

সম্পর্কিত টুল

আরও টুল দেখুন

সব 69টি টুল দেখুন →

আপনার সাইটে এই টুলটি এমবেড করুন — বিনামূল্যে

সব এমবেডযোগ্য টুল →

যেকোনো পৃষ্ঠা, পোস্ট বা টেমপ্লেটে Random Number Generator যোগ করুন। এটি চিরকাল বিনামূল্যে — কোনো সাইন-আপ নেই, উইজেটের ভিতরে কোনো বিজ্ঞাপন নেই। একমাত্র শর্ত: ছোট দৃশ্যমান কৃতিত্ব লিঙ্কটি রেখে দিন।

উইজেটটি প্রিভিউ করুন