কম্পিউটার টিউটোরিয়াল

JavaScript-এ র‍্যান্ডম হেক্স কালার জেনারেট করা

ভূমিকা

ওয়েব ডেভেলপমেন্টে র‍্যান্ডম কালার জেনারেট করা একটি সাধারণ টাস্ক। এই আর্টিকেলে হেক্সাডেসিমাল (Hex) কালার কোড (`#RRGGBB`) জেনারেট করার একটি সিম্পল ফাংশন দেখানো হয়েছে।

সম্পূর্ণ কোড

const generateRandomColor = () => {
  const keys = '0123456789ABCDEF';
  let color = '';
  while (color.length < 6) {
    const random = Math.floor(Math.random() * 16);
    color += keys[random];
  }
  return `#${color}`;
};

console.log(generateRandomColor()); // #C83343
console.log(generateRandomColor()); // #D9AAF3
console.log(generateRandomColor()); // #9D55CC
console.log(generateRandomColor()); // #28AE22

কোড ব্যাখ্যা

  1. keys: হেক্স ডিজিটস (0-9, A-F)
  2. while লুপ: ৬ ক্যারেক্টার পর্যন্ত চালানো
  3. Math.random() * 16: ০-১৫ এর মধ্যে র‍্যান্ডম ইন্টিজার
  4. keys[random]: সংশ্লিষ্ট হেক্স ক্যারেক্টার পিক করা
  5. #${color}: হেক্স কালার ফরম্যাটে রিটার্ন

আউটপুট (নমুনা)

#C83343
#D9AAF3
#9D55CC
#28AE22

আধুনিক ও উন্নত পদ্ধতিগুলো

১. toString(16) ব্যবহার (সংক্ষিপ্ত)

const generateRandomColor = () => 
  '#' + Math.floor(Math.random() * 0xffffff).toString(16).padStart(6, '0');

0xffffff = ১৬৭৭৭২১৫ (২৪-বিট কালারের সর্বোচ্চ মান)। padStart(6, '0') নিশ্চিত করে ৬ ডিজিট থাকে।

২. crypto.getRandomValues() (ক্রিপ্টোগ্রাফিকলি সিকিউর)

const generateSecureRandomColor = () => {
  const array = new Uint32Array(1);
  crypto.getRandomValues(array);
  return '#' + array[0].toString(16).padStart(6, '0');
};

৩. RGB/HSL ফরম্যাটে জেনারেট

const randomRGB = () => 
  `rgb(${Math.floor(Math.random()*256)}, ${Math.floor(Math.random()*256)}, ${Math.floor(Math.random()*256)})`;

const randomHSL = () => 
  `hsl(${Math.floor(Math.random()*360)}, ${Math.floor(Math.random()*100)}%, 50%)`;

৪. প্রিডিফাইনড কালার প্যালেট থেকে পিক

const palette = ['#FF6B6B', '#4ECDC4', '#45B7D1', '#96CEB4', '#FFEAA7', '#DDA0DD'];
const randomFromPalette = () => palette[Math.floor(Math.random() * palette.length)];

পারফরম্যান্স তুলনা

পদ্ধতি স্পিড সিকিউরিটি ব্রাউজার সাপোর্ট
while + keys মিডিয়াম নন-ক্রিপ্টো সব ব্রাউজার
toString(16) ফাস্ট নন-ক্রিপ্টো সব ব্রাউজার
crypto.getRandomValues স্লোয়ার ক্রিপ্টো সিকিউর মডার্ন ব্রাউজার

ব্যবহারিক টিপস

  • কন্ট্রাস্ট নিশ্চিত করতে: লাইট/ডার্ক ব্যাকগ্রাউন্ডের জন্য লুমিন্যান্স চেক করুন
  • আক্সেসিবিলিটি: WCAG কন্ট্রাস্ট রেশিও মেনটেইন করুন
  • ক্যাশিং: একই কালার বারবার লাগলে ক্যাশ করুন
  • সিডেড র‍্যান্ডম: টেস্টিং/রিপ্রোডাসিবিলিটির জন্য seedable RNG ব্যবহার করুন

সারাংশ

সিম্পল কেসের জন্য `toString(16) + padStart` সেরা। সিকিউরিটি-ক্রিটিক্যাল অ্যাপের জন্য `crypto.getRandomValues()` ব্যবহার করুন।

  1. জাভাস্ক্রিপ্ট Number() ফাংশন

  2. জাভাস্ক্রিপ্টে র‍্যান্ডম কালার জেনারেটর

  3. জাভাস্ক্রিপ্টে সংখ্যার অঙ্কগুলো আলাদা করা

  4. জাভাস্ক্রিপ্টে সংখ্যা প্যাটার্ন প্রিন্ট করা