মূল লেখায় যান
বাংলা
কাজের টেবিলযেসব সরঞ্জাম কিছুই আপলোড করে না
ODERSA সংস্থার একটি কর্মশালাকিছু বাইরে যায় না, কিছু জমা থাকে না, কিছু আমাদের কাছে পৌঁছায় না।

কর্মশালা · এলোমেলো বাছাই

কীভাবে কাজ করে : এলোমেলো বাছাই

অনলাইনের প্রায় সব বাছাইয়ের যন্ত্রই ব্রাউজারের সাধারণ এলোমেলো সংখ্যার যন্ত্রটি ব্যবহার করে, যা আন্দাজ করা যায়। এটি সিস্টেমের ক্রিপ্টোগ্রাফিক যন্ত্রটি ব্যবহার করে, বাতিল করার নিয়মসহ, আর সম্ভাবনার সঠিক হিসাবটিও দেখিয়ে দেয়।

সরঞ্জামটি খুলুন

ছাত্রছাত্রীদের নামের একটি তালিকা একটি ব্যক্তিগত তথ্য। মেশানোর জন্য সেটি এমন কোনো সাইটে বসিয়ে দেওয়া যে তা কোনো সার্ভারে পাঠিয়ে দেয়, মানে নিজের ক্লাসটি কারা নিয়ে তৈরি তা একজন অচেনা মানুষের হাতে তুলে দেওয়া, এমন একটি কাজের জন্য যা ব্রাউজার নিজেই করতে জানে। এখানে তালিকাটি আপনার ট্যাবেই পড়া হয়, কোথাও পাঠানো হয় না, আর আপনি পাতাটি বন্ধ করলেই সেটি মিলিয়ে যায়।

বাছাইটি নিজেও কোনো খুঁটিনাটি নয়। ব্রাউজারের সাধারণ এলোমেলো সংখ্যার যন্ত্রটি বানানো হয়েছে গতির জন্য, ন্যায্যতার জন্য নয়: তার সারিটি আবার তৈরি করা যায়, আর কিছু ইঞ্জিনে সেটি বহুকাল স্পষ্টভাবেই পক্ষপাতদুষ্ট ছিল। এই সরঞ্জামটি কেবল সিস্টেমের ক্রিপ্টোগ্রাফিক যন্ত্রটিই ব্যবহার করে, যেটি চাবি বানাতে কাজে লাগে, আর সে আপনার তালিকার মাপে ঢোকানোর জন্য একটি তোলাকে মুচড়ে দেওয়ার বদলে সেটি বাতিল করে দেয়।

সে আরও দেখায় যা অন্যেরা লুকিয়ে রাখে: কতগুলি ফল সম্ভব ছিল, অর্থাৎ প্রতিটি নামের সুযোগ কতটা ছিল। আটাশ নামের একটি তালিকায় সৎ একটি বাছাই প্রত্যেককে ঠিক আটাশ ভাগের এক ভাগ সুযোগ দেয়, আর সেটি কোনো অ্যানিমেশন দিয়ে নয়, হিসাব দিয়েই যাচাই করা যায়।

কীভাবে কাজ করে

  1. উপরের জায়গাটিতে আপনার তালিকাটি বসিয়ে দিন, লাইনপ্রতি একটি নাম। খালি লাইনগুলি ছেড়ে দেওয়া হয়।
  2. সরঞ্জামটি চালু করুন। সে তালিকাটি পড়ে, সে যেমন বুঝেছে তেমনই সেটি দেখায়, আর তারপর তোলে।
  3. এরপর আপনি কী চান তা বেছে নিন: একটি নাম, ফেরত না দিয়ে কয়েকটি নাম, গোটা তালিকাটি মেশানো ক্রমে, নাকি কয়েকটি দল। প্রতিটি বদলেই একটি নতুন বাছাই হয়।

গৃহীত ফরম্যাট

লাইনপ্রতি একটি নাম। খালি লাইন আর বাড়তি ফাঁকা জায়গা সরিয়ে দেওয়া হয়; একই নাম দুবার থাকলে সেগুলি রেখে দেওয়া হয় আর জানিয়ে দেওয়া হয়, কারণ দুজন মানুষের নাম এক হতেই পারে আর সেগুলি সরিয়ে দিলে আপনাকে না বলেই আপনার তালিকাটি বদলে যেত।

বসিয়ে দেওয়া লেখা

নামপ্রতি একটি লাইন। কোনো স্প্রেডশিট থেকে গোটা একটি কলামও বসিয়ে দিতে পারেন: প্রতিটি ঘর নিজের লাইনেই এসে পড়ে।

সামঞ্জস্যের ছক দেখুন

এর সীমা

ঘুরতে থাকা কোনো চাকা নেই, আর অন্য কোথাও প্রতিশ্রুতি দেওয়ার বদলে কথাটা এখানেই লেখা

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

তালিকার 40000 চিহ্ন, অর্থাৎ গোটা একটি বিদ্যালয়ের চেয়েও ঢের বেশি

তার বেশি হলে বাছাইটি ভারী হয়ে ওঠার আগেই পড়া তালিকাটির প্রদর্শন আর পড়ার যোগ্য থাকে না। তাই সীমাটি সেখানেই বসানো যেখানে সরঞ্জামটি কাজের থাকে না, সেখানে নয় যেখানে সে চলা বন্ধ করে।

একই নাম দুবার থাকলে সেগুলি রেখে দেওয়া হয়

দুজন ছাত্রছাত্রীর নামই রিয়া হতে পারে। চুপচাপ দ্বিতীয়টি সরিয়ে দিলে বাছাই থেকে একজন মানুষকেই সরিয়ে দেওয়া হত, যা চাওয়া কাজটির ঠিক উল্টো। সরঞ্জামটি দুবার থাকা নামগুলি গোনে আর কথাটা বলে দেয়, আর সিদ্ধান্তটি আপনার।

এক বার থেকে আরেক বারের জন্য কিছুই রাখা হয় না

সরঞ্জামটি আপনার ডিভাইসে কোনো তালিকাই লেখে না আর কোনো চিহ্নও রাখে না: তাই গত সপ্তাহে কার পালা হয়ে গেছে তা তার মনে থাকতে পারে না। এটি একটি মেনে নেওয়া সীমা, আর এটিই প্রতিশ্রুতিটির দাম: ছাত্রছাত্রীদের নামের যে তালিকা কোথাও জমা থাকে, সেটি ফাঁস হতেও পারে।

একটি বাছাই সময়ের সঙ্গে সঙ্গে ন্যায্য বণ্টন নয়

সত্যিকারের এলোমেলোতা পরপর দুবার একই মানুষকেই বেছে নিতে পারে, আর সেটাই স্বাভাবিক: বরং এটিই একটি না-সাজানো বাছাইয়ের চিহ্ন। প্রত্যেকের পালা যদি একবার আর একবারই আসুক চান, তবে বারবার তোলার বদলে গোটা তালিকাটি মেশানো ক্রমে নিন: ওই মোডটি ঠিক এর জন্যই।

এই সরঞ্জাম নিয়ে প্রশ্ন

আমার নামের তালিকাটি কি কোথাও পাঠানো হয়?

না, আর এখানে এই কথাটিই সবচেয়ে বেশি গোনার মতো, কারণ ছাত্রছাত্রীদের নামের একটি তালিকা একটি ব্যক্তিগত তথ্য। F12 বোতাম দিয়ে ইন্সপেক্টর খুলুন, “Network” ট্যাব, তালিকাটি খালি করুন, তারপর আপনার নামগুলি বসিয়ে যত খুশি বার বেছে নিন: রিকোয়েস্টের তালিকাটি খালিই থাকে। সংযোগ কেটে দিয়ে আবার করুন: সরঞ্জামটি তবুও বেছে নেয়।

এলোমেলো সংখ্যার যন্ত্রটি নিয়ে এত জোর দিচ্ছেন কেন?

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

পাতাটি যে বাতিল করার নিয়মের কথা বলছে সেটি কী?

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

একই নাম পরপর দুবার বেরোতে পারে কেন?

কারণ প্রতিটি বাছাই আগেরগুলি গ্রাহ্যই করে না, আর সৎ একটি বাছাইয়ের কাছে ঠিক সেটাই আশা করা হয়। যে সরঞ্জাম শেষ বেরোনো নামটিতে আবার পড়া নিষেধ করত, সে আর ন্যায্য থাকত না: সে ওই নামটির সুযোগ শূন্য করে দিত আর বাকিদের সুযোগ বাড়িয়ে দিত। আপনার দরকার যদি হয় প্রত্যেকের একবার করে পালা আসা, তবে “গোটা তালিকাটি মিশিয়ে দিন” মোডটি সেটি একবারেই করে দেয়, কাউকে বাদ না দিয়ে।

দলগুলি কীভাবে বানানো হয়?

গোটা তালিকাটি আগে Fisher আর Yates-এর পদ্ধতিতে মেশানো হয়, তারপর নাম ধরে ধরে দলগুলিতে বিলি করা হয়, যেভাবে তাসের একটি প্যাকেট বিলি করা হয়। এই খুঁটিনাটিটির একটি কাজের ফল আছে: নামের সংখ্যা দলের সংখ্যা দিয়ে ভাগ না গেলেও দলগুলির মধ্যে তফাত কখনও একটি নামের বেশি হতে পারে না। মেশানো তালিকাটিকে টুকরো করে কাটলেও একই ভারসাম্যই হত, কিন্তু বিলি করার কাজটি কোডে পড়তে বেশি সহজ, আর যে কোড পড়া যায় সে কোড যাচাইও করা যায়।

আমি কি এমন একটি লটারিতে এটি ব্যবহার করতে পারি যার ফল গোনার মতো?

ঘরোয়া একটি বাছাইয়ের জন্য হ্যাঁ, কোনো সংশয় ছাড়াই: পদ্ধতিটি শক্ত আর আপনি সেটি যাচাই করতে পারেন। কিন্তু যে বাছাই তৃতীয় কারও কাছে টেকাতে হবে, যেমন কোনো সম্পত্তি বা কোনো আসন বরাদ্দ করা, তার জন্য নয়, আর তা ব্যবহার করা এলোমেলোতার কারণে নয়: কারণ আপনার পর্দায় কী ঘটেছে তা এখানকার কিছুই তৃতীয় কারও কাছে প্রমাণ করে না। টেকানোর মতো একটি বাছাইয়ের জন্য একজন সাক্ষী, একটি কার্যবিবরণী বা একজন আইনি কর্মকর্তা লাগে, আর কোনো ওয়েবসাইটই তার জায়গা নিতে পারে না, যে সাইট আপনাকে উল্টোটা কসম কেটে বলবে সেটিও নয়।

আমি কি পরের বারের জন্য আমার তালিকাটি রেখে দিতে পারি?

সরঞ্জামের ভিতরে নয়, আর তা ইচ্ছে করেই: আমরা আপনার ডিভাইসে নামের কোনো তালিকাই লিখি না, তাই সেখানে কোনোটাই খুঁজে পাওয়া যাবে না। আপনার তালিকাটি যেখানে আগে থেকেই রাখেন সেখানেই রাখুন, কোনো ফাইলে বা কোনো স্প্রেডশিটে, আর আবার বসিয়ে দিন। এটি একটি বাড়তি কাজ, আর তার বদলে যে নিশ্চয়তাটি পাওয়া যায় সেটির দাম আছে।