Linear congruential generator
একটি রৈখিক কংগ্রুয়েন্সিয়াল জেনারেটর (এল. সি. জি) হল একটি অ্যালগরিদম যা একটি বিচ্ছিন্ন পিসওয়াইজ রৈখিক সমীকরণ দিয়ে গণনা করা ছদ্ম-এলোমেলো সংখ্যার একটি ক্রম প্রদান করে। পদ্ধতিটি প্রাচীনতম এবং সর্বাধিক পরিচিত সিউডোরান্ডম নম্বর জেনারেটর অ্যালগরিদমগুলির প্রতিনিধিত্ব করে। এগুলির পিছনের তত্ত্বটি বোঝা তুলনামূলকভাবে সহজ, এবং এগুলি সহজেই প্রয়োগ করা যায় এবং দ্রুত, বিশেষত কম্পিউটার হার্ডওয়্যারে যা স্টোরেজ-বিট ছাঁটাইয়ের মাধ্যমে মডুলার পাটিগণিত সরবরাহ করতে পারে। জেনারেটরকে পুনরাবৃত্তি সম্পর্ক দ্বারা সংজ্ঞায়িত করা হয়ঃ যেখানে ছদ্ম-এলোমেলো মানগুলির ক্রম, এবং-"মডুলাস"-"গুণক"-"বৃদ্ধি"-"বীজ" বা "শুরু মান" হল পূর্ণসংখ্যা ধ্রুবক যা জেনারেটরকে নির্দিষ্ট করে। যদি c = 0 হয়, তবে জেনারেটরটিকে প্রায়শই গুণিতক কংগ্রুয়েন্সিয়াল জেনারেটর (এমসিজি) বা লেহমার আরএনজি বলা হয়। যদি c ষ্ণুত 0 হয়, তবে পদ্ধতিটিকে মিশ্র কংগ্রুয়েন্সিয়াল জেনারেটর বলা হয়। যখন c ষ্ণ 0 হয়, তখন একজন গণিতবিদ পুনরাবৃত্তিকে একটি অ্যাফিন রূপান্তর বলবেন, রৈখিক নয়, তবে ভুল নামটি কম্পিউটার বিজ্ঞানে সুপ্রতিষ্ঠিত। লেহমার জেনারেটর 1951 সালে প্রকাশিত হয় এবং লিনিয়ার কংগ্রুয়েন্সিয়াল জেনারেটর 1958 সালে ডব্লিউ. ই. থমসন এবং এ. রটেনবার্গ দ্বারা প্রকাশিত হয়। সময়ের দৈর্ঘ্য এল. সি. জি-র একটি সুবিধা হল যে পরামিতিগুলির একটি উপযুক্ত পছন্দ এমন একটি সময়ের ফলাফল দেয় যা পরিচিত এবং দীর্ঘ উভয়ই। যদিও একমাত্র মানদণ্ড নয়, খুব কম সময়কাল একটি সিউডোরান্ডম নম্বর জেনারেটরের একটি মারাত্মক ত্রুটি। যদিও এল. সি. জিগুলি ছদ্মবেশী সংখ্যা তৈরি করতে সক্ষম যা এলোমেলোতার জন্য আনুষ্ঠানিক পরীক্ষায় উত্তীর্ণ হতে পারে, আউটপুটের গুণমান m এবং a পরামিতিগুলির পছন্দের প্রতি অত্যন্ত সংবেদনশীল। উদাহরণস্বরূপ, a = 1 এবং c = 1 একটি সাধারণ মডুলো-এম কাউন্টার তৈরি করে, যার একটি দীর্ঘ সময়কাল রয়েছে, তবে স্পষ্টতই এটি এলোমেলো নয়। ঐতিহাসিকভাবে, দুর্বল পছন্দগুলি এল. সি. জি-র অকার্যকর বাস্তবায়নের দিকে পরিচালিত করেছে। এর একটি বিশেষ দৃষ্টান্ত হল রাণ্ডু, যা 1970-এর দশকের গোড়ার দিকে ব্যাপকভাবে ব্যবহৃত হয়েছিল এবং অনেক ফলাফলের দিকে পরিচালিত করেছিল যা বর্তমানে এই দুর্বল এলসিজি ব্যবহারের কারণে প্রশ্নবিদ্ধ হচ্ছে। প্যারামিটার পছন্দের তিনটি সাধারণ পরিবার রয়েছেঃ এম প্রাইম, সি = 0 এটি মূল লেহমার আরএনজি নির্মাণ। যদি গুণক a কে পূর্ণসংখ্যা মডুলো m-এর একটি আদিম উপাদান হিসেবে বেছে নেওয়া হয়, তাহলে এই সময়কাল হবে m−1। প্রাথমিক অবস্থাটি অবশ্যই 1 এবং m−1-এর মধ্যে বেছে নিতে হবে। মৌলিক মডুলাসের একটি অসুবিধা হল যে মডুলার হ্রাসের জন্য একটি দ্বিগুণ প্রস্থের পণ্য এবং একটি স্পষ্ট হ্রাস পদক্ষেপ প্রয়োজন। প্রায়শই 2-এর ঘাতের ঠিক কম একটি মৌলিক সংখ্যা ব্যবহার করা হয় (মার্সেন মৌলিক সংখ্যা 239−1 এবং 261−1 জনপ্রিয়), যাতে হ্রাস মডুলো m = 2e−d হিসাবে গণনা করা যেতে পারে (অ্যাক্স মোড 2e) + d। এর পরে অবশ্যই m-এর শর্তাধীন বিয়োগ করতে হবে যদি ফলাফলটি খুব বড় হয়, তবে বিয়োগের সংখ্যা ad/m-এর মধ্যে সীমাবদ্ধ, যা d ছোট হলে সহজেই একটিতে সীমাবদ্ধ করা যেতে পারে। যদি একটি দ্বি-প্রস্থ পণ্য অনুপলব্ধ থাকে এবং গুণকটি সাবধানে বেছে নেওয়া হয়, তবে শ্রেজের পদ্ধতি ব্যবহার করা যেতে পারে। এটি করার জন্য, গুণক m = qa + r, অর্থাৎ। এবং। তারপর এক্স মোড এম = গণনা করুন। যেহেতু x মোড q <q ≤ m/a, তাই প্রথম পদটি কঠোরভাবে am/a = m এর চেয়ে কম। যদি a বেছে নেওয়া হয় যাতে r ≤ q (এবং এইভাবে r/q ≤ 1) হয়, তবে দ্বিতীয় পদটিও m এর চেয়ে কমঃ r ≤ rx/q = x (r/q) ≤ x <m। সুতরাং, উভয় গুণফলকে একক-প্রস্থের গুণফল দিয়ে গণনা করা যেতে পারে এবং তাদের মধ্যে পার্থক্য [1−m, m−1] পরিসরে থাকে, তাই একক শর্তাধীন যোগের মাধ্যমে [0, m−1] এ হ্রাস করা যেতে পারে। দ্বিতীয় অসুবিধাটি হল 1 ≤ x <m মানটিকে অভিন্ন র্যান্ডম বিটগুলিতে রূপান্তর করা বিশ্রী। যদি 2-এর ঘাতের ঠিক কম মৌলিক সংখ্যা ব্যবহার করা হয়, তবে কখনও কখনও অনুপস্থিত মানগুলি কেবল উপেক্ষা করা হয়। m কে 2 এর ঘাত হিসাবে বেছে নেওয়া, প্রায়শই m = 232 বা m = 264, একটি বিশেষভাবে দক্ষ এল. সি. জি তৈরি করে, কারণ এটি মডুলাস ক্রিয়াকলাপকে কেবল বাইনারি উপস্থাপনাটি কেটে গণনা করার অনুমতি দেয়। প্রকৃতপক্ষে, সবচেয়ে গুরুত্বপূর্ণ বিটগুলি সাধারণত গণনা করা হয় না। তবে এর কিছু অসুবিধাও রয়েছে। এই ফর্মটির সর্বাধিক সময়কাল m/4, যদি a ষ্ণ 3 বা a ষ্ণ 5 (মড 8) হয়। প্রাথমিক অবস্থা X0 অবশ্যই বিজোড় হতে হবে এবং X-এর নিম্ন তিনটি বিট দুটি অবস্থার মধ্যে পরিবর্তিত হয় এবং কার্যকর নয়। এটি দেখানো যেতে পারে যে এই ফর্মটি একটি জেনারেটরের সমতুল্য যার একটি মডুলাস এক চতুর্থাংশ আকারের এবং সি ষ্ণ 0। পাওয়ার-অফ-টু মডুলাস ব্যবহারের ক্ষেত্রে আরও গুরুতর সমস্যা হল যে নিম্ন বিটগুলির উচ্চ বিটগুলির তুলনায় সংক্ষিপ্ত সময়কাল থাকে। এক্স-এর সর্বনিম্ন-ক্রমের বিট কখনই পরিবর্তিত হয় না (এক্স সর্বদা বিজোড়), এবং পরবর্তী দুটি বিট দুটি অবস্থার মধ্যে পরিবর্তিত হয়। (যদি একটি ষ্ণ 5 (মড 8) হয়, তবে বিট 1 কখনই পরিবর্তিত হয় না এবং বিট 2 পরিবর্তিত হয়। যদি একটি ষ্ণ 3 (মড 8) হয়, তবে বিট 2 কখনই পরিবর্তিত হয় না এবং বিট 1 পরিবর্তিত হয়।) বিট 3 4-এর সময়কালের সাথে পুনরাবৃত্তি করে, বিট 4-এর 8-এর সময়কাল থাকে, ইত্যাদি। শুধুমাত্র এক্স-এর সবচেয়ে উল্লেখযোগ্য অংশটি সম্পূর্ণ সময়কাল অর্জন করে। c ষ্ণ 0 যখন c ষ্ণ 0, সঠিকভাবে নির্বাচিত পরামিতিগুলি সমস্ত বীজ মানের জন্য m এর সমান একটি সময়কালের অনুমতি দেয়। এটি তখনই ঘটবে যখনঃ এবং তুলনামূলকভাবে মৌলিক, সমস্ত মৌলিক গুণক দ্বারা বিভাজ্য, 4 দ্বারা বিভাজ্য যদি 4 দ্বারা বিভাজ্য হয়। এই তিনটি প্রয়োজনীয়তাকে হাল-ডোবেল উপপাদ্য হিসাবে উল্লেখ করা হয়। এই ফর্মটি যে কোনও এম-এর সাথে ব্যবহার করা যেতে পারে, তবে শুধুমাত্র অনেক পুনরাবৃত্ত মৌলিক কারণের সাথে এম-এর জন্য ভাল কাজ করে, যেমন 2-এর শক্তি; একটি কম্পিউটারের শব্দের আকার ব্যবহার করা সবচেয়ে সাধারণ পছন্দ। যদি m একটি বর্গ-মুক্ত পূর্ণসংখ্যা হত, তবে এটি শুধুমাত্র একটি ষ্ণ 1 (মড মি)-কে অনুমতি দিত, যা একটি খুব দুর্বল পিআরএনজি তৈরি করে; সম্ভাব্য পূর্ণ-সময়ের গুণকগুলির একটি নির্বাচন কেবল তখনই পাওয়া যায় যখন m-এর মৌলিক গুণকগুলির পুনরাবৃত্তি হয়। যদিও হাল-ডোবেল উপপাদ্য সর্বাধিক সময়কাল প্রদান করে, তবে এটি একটি ভাল জেনারেটরের নিশ্চয়তা দেওয়ার জন্য যথেষ্ট নয়। উদাহরণস্বরূপ, a-1-এর জন্য প্রয়োজনের চেয়ে বেশি m-এর মৌলিক গুণক দ্বারা বিভাজ্য না হওয়া কাম্য। সুতরাং, যদি m 2-এর একটি ঘাত হয়, তবে a-1 4 দ্বারা বিভাজ্য হওয়া উচিত কিন্তু 8 দ্বারা বিভাজ্য নয়, অর্থাৎ a ষ্ণ 5 (মড 8)। প্রকৃতপক্ষে, বেশিরভাগ গুণক একটি ক্রম তৈরি করে যা এলোমেলো বা অন্যটির জন্য একটি পরীক্ষায় ব্যর্থ হয় এবং সমস্ত প্রযোজ্য মানদণ্ডের জন্য সন্তোষজনক একটি গুণক খুঁজে পাওয়া বেশ চ্যালেঞ্জিং। বর্ণালী পরীক্ষা হল সবচেয়ে গুরুত্বপূর্ণ পরীক্ষাগুলির মধ্যে একটি। লক্ষ্য করুন যে একটি পাওয়ার-অফ-2 মডুলাস c = 0 এর জন্য উপরে বর্ণিত সমস্যাটি ভাগ করেঃ নিম্ন k বিটগুলি মডুলাস 2k সহ একটি জেনারেটর গঠন করে এবং এইভাবে 2k সময়ের সাথে পুনরাবৃত্তি করে; শুধুমাত্র সবচেয়ে উল্লেখযোগ্য বিট পুরো সময়কাল অর্জন করে। যদি r এর চেয়ে কম একটি ছদ্মবেশী সংখ্যা কাঙ্ক্ষিত হয়, তবে এটি X মড r এর তুলনায় অনেক বেশি মানের ফলাফল। দুর্ভাগ্যবশত, বেশিরভাগ প্রোগ্রামিং ভাষাগুলি পরেরটিকে (X% r) লেখা অনেক সহজ করে তোলে, তাই এটি আরও সাধারণভাবে ব্যবহৃত ফর্ম। জেনারেটরটি সি-এর পছন্দের প্রতি সংবেদনশীল নয়, যতক্ষণ না এটি মডুলাসের তুলনায় মৌলিক হয় (যেমন। যদি m 2-এর ঘাত হয়, তাহলে c অবশ্যই বিজোড় হতে হবে), তাই c = 1 মানটি সাধারণত বেছে নেওয়া হয়। সি-এর অন্যান্য পছন্দ দ্বারা উত্পাদিত সিরিজটি সিরিজের একটি সহজ ফাংশন হিসাবে লেখা যেতে পারে যখন সি = 1। বিশেষত, যদি Y হল Y0 = 0 এবং Yn + 1 = aYn + 1 মড m দ্বারা সংজ্ঞায়িত প্রোটোটাইপিক্যাল সিরিজ হয়, তবে একটি সাধারণ সিরিজ Xn + 1 = aXn + c মোড m কে Y এর অ্যাফিন ফাংশন হিসাবে লেখা যেতে পারেঃ আরও সাধারণভাবে, একই গুণক এবং মডুলাস সহ যে কোনও দুটি সিরিজ X এবং Z সাধারণ ব্যবহারে প্যারামিটার দ্বারা সম্পর্কিত। এই টেবিলটি জনপ্রিয়তা দেখানোর জন্য, অনুকরণ করার জন্য উদাহরণ নয়; এই পরামিতিগুলির মধ্যে অনেকগুলি দুর্বল। ভালো প্যারামিটারের টেবিল পাওয়া যায়। উপরে যেমন দেখানো হয়েছে, এল. সি. জি সবসময় তাদের উৎপাদিত মানের সমস্ত বিট ব্যবহার করে না। উদাহরণস্বরূপ, জাভা বাস্তবায়ন প্রতিটি পুনরাবৃত্তিতে 48-বিট মান নিয়ে কাজ করে কিন্তু শুধুমাত্র তাদের 32টি সবচেয়ে গুরুত্বপূর্ণ বিট প্রদান করে। এর কারণ হল উচ্চ-ক্রমের বিটগুলির নিম্ন-ক্রমের বিটগুলির তুলনায় দীর্ঘ সময়কাল থাকে (নীচে দেখুন)। যে এল. সি. জিগুলি এই ছাঁটাই কৌশলটি ব্যবহার করে তারা পরিসংখ্যানগতভাবে তাদের তুলনায় ভাল মান তৈরি করে যা করে না। এটি বিশেষত সেই স্ক্রিপ্টগুলিতে লক্ষণীয় যা পরিসীমা হ্রাস করতে মোড অপারেশন ব্যবহার করে; এলোমেলো সংখ্যা মোড 2 সংশোধন করলে কাটা ছাড়াই 0 এবং 1 পরিবর্তিত হবে। সুবিধা এবং অসুবিধাগুলি হল এল. সি. জি দ্রুত এবং স্থিতি বজায় রাখার জন্য ন্যূনতম মেমরি (একটি মডুলো-এম সংখ্যা, প্রায়শই 32 বা 64 বিট) প্রয়োজন। এটি তাদের একাধিক স্বাধীন প্রবাহ অনুকরণের জন্য মূল্যবান করে তোলে। এলসিজিগুলি ক্রিপ্টোগ্রাফিক অ্যাপ্লিকেশনের উদ্দেশ্যে নয় এবং অবশ্যই ব্যবহার করা উচিত নয়; এই ধরনের অ্যাপ্লিকেশনের জন্য একটি ক্রিপ্টোগ্রাফিকভাবে সুরক্ষিত সিউডোরান্ডম নম্বর জেনারেটর ব্যবহার করুন। যদিও এল. সি. জি-র কয়েকটি নির্দিষ্ট দুর্বলতা রয়েছে, তবে তাদের অনেক ত্রুটি খুব ছোট একটি রাজ্য থাকার কারণে আসে। এই কৌশলটির শক্তির প্রমাণ হিসাবে দেখা যেতে পারে যে মানুষ এত বছর ধরে এই ধরনের ছোট মডুলি ব্যবহার করার জন্য প্রলুব্ধ হয়েছে। যথেষ্ট বড় অবস্থা সহ একটি এল. সি. জি এমনকি কঠোর পরিসংখ্যানগত পরীক্ষায় উত্তীর্ণ হতে পারে; একটি মডুলো-2 এল. সি. জি যা উচ্চ 32 বিট প্রদান করে টেস্টইউ01-এর স্মলক্রাশ স্যুট পাস করে এবং একটি 96-বিট এল. সি. জি সবচেয়ে কঠোর বিগক্রাশ স্যুট পাস করে। একটি নির্দিষ্ট উদাহরণের জন্য, 32 বিট আউটপুট সহ একটি আদর্শ র্যান্ডম নম্বর জেনারেটর (জন্মদিনের উপপাদ্য অনুসারে) ফলাফলের পরে পূর্ববর্তী আউটপুটগুলি প্রতিলিপি করা শুরু করবে বলে আশা করা হচ্ছে। যে কোনও পিআরএনজি যার আউটপুট তার পূর্ণ, অপ্রচলিত অবস্থা তার সম্পূর্ণ সময়কাল শেষ না হওয়া পর্যন্ত ডুপ্লিকেট তৈরি করবে না, যা সহজেই সনাক্তযোগ্য পরিসংখ্যানগত ত্রুটি। সম্পর্কিত কারণে, যে কোনও পিআরএনজি-র সময়কাল প্রয়োজনীয় আউটপুটের সংখ্যার বর্গক্ষেত্রের চেয়ে বেশি হওয়া উচিত। আধুনিক কম্পিউটারের গতির পরিপ্রেক্ষিতে, এর অর্থ হল ন্যূনতম চাহিদাযুক্ত অ্যাপ্লিকেশনগুলির জন্য 264 এবং চাহিদাযুক্ত সিমুলেশনগুলির জন্য দীর্ঘ সময়কাল। এল. সি. জি-র একটি নির্দিষ্ট ত্রুটি হল, যদি একটি এন-ডাইমেনশনাল স্পেসে পয়েন্টগুলি বেছে নেওয়ার জন্য ব্যবহার করা হয়, তবে পয়েন্টগুলি সর্বাধিক হাইপারপ্লেনের উপর থাকবে (জর্জ মার্সাগলিয়া দ্বারা বিকশিত মার্সাগলিয়ার উপপাদ্য)। এটি Xn অনুক্রমের ধারাবাহিক মানগুলির মধ্যে ক্রমিক পারস্পরিক সম্পর্কের কারণে হয়। অসাবধানতার সাথে নির্বাচিত মাল্টিপ্লায়ারগুলিতে সাধারণত অনেক কম, ব্যাপকভাবে ব্যবধানযুক্ত প্লেন থাকে, যা সমস্যার কারণ হতে পারে। বর্ণালী পরীক্ষা, যা একটি এল. সি. জি-র গুণমানের একটি সহজ পরীক্ষা, এই ব্যবধানটি পরিমাপ করে এবং একটি ভাল গুণক বেছে নেওয়ার অনুমতি দেয়। সমতলের ব্যবধান মডুলাস এবং গুণক উভয়ের উপর নির্ভর করে। একটি যথেষ্ট বড় মডুলাস দ্বিগুণ নির্ভুলতা সংখ্যার রেজোলিউশনের নিচে এই দূরত্বকে হ্রাস করতে পারে। মডুলাস বড় হলে গুণকের পছন্দ কম গুরুত্বপূর্ণ হয়ে ওঠে। বর্ণালী সূচকটি গণনা করা এবং নিশ্চিত করা প্রয়োজন যে গুণকটি খারাপ নয়, তবে সম্পূর্ণ সম্ভাবনাময়ভাবে যখন মডুলাসটি প্রায় 264 এর চেয়ে বড় হয় তখন খারাপ গুণকের মুখোমুখি হওয়ার সম্ভাবনা অত্যন্ত কম থাকে। এল. সি. জি-র জন্য নির্দিষ্ট আরেকটি ত্রুটি হল নিম্ন-ক্রমের বিটগুলির স্বল্প সময়কাল যখন এম-কে 2-এর ঘাত হিসাবে বেছে নেওয়া হয়। প্রয়োজনীয় আউটপুটের চেয়ে বড় মডুলাস ব্যবহার করে এবং রাজ্যের সবচেয়ে উল্লেখযোগ্য বিট ব্যবহার করে এটি প্রশমিত করা যেতে পারে। তবুও, কিছু অ্যাপ্লিকেশনের জন্য এল. সি. জি একটি ভাল বিকল্প হতে পারে। উদাহরণস্বরূপ, একটি এমবেডেড সিস্টেমে উপলব্ধ মেমরির পরিমাণ প্রায়শই গুরুতরভাবে সীমিত থাকে। একইভাবে, ভিডিও গেম কনসোলের মতো পরিবেশে একটি এল. সি. জি-র অল্প সংখ্যক হাই-অর্ডার বিট নেওয়া যথেষ্ট হতে পারে। (এল. সি. জি-র নিম্ন-ক্রমের বিটগুলি যখন এম 2-এর একটি শক্তি হয় তখন কখনও কোনও মাত্রার এলোমেলোতার জন্য নির্ভর করা উচিত নয়।) নিম্ন ক্রমের বিটগুলি খুব সংক্ষিপ্ত চক্রের মধ্য দিয়ে যায়। বিশেষত, যে কোনও পূর্ণ-চক্র এল. সি. জি, যখন এম 2-এর একটি ঘাত, পর্যায়ক্রমে বিজোড় এবং জোড় ফলাফল তৈরি করবে। অ-ক্রিপ্টোগ্রাফিক অ্যাপ্লিকেশনগুলিতে উপযুক্ততার জন্য এলসিজিগুলি খুব যত্ন সহকারে মূল্যায়ন করা উচিত যেখানে উচ্চ-মানের এলোমেলোতা গুরুত্বপূর্ণ। মন্টে কার্লো সিমুলেশনের জন্য, একটি এল. সি. জি-কে অবশ্যই একটি মডুলাস ব্যবহার করতে হবে যা র্যান্ডম নমুনার সংখ্যার ঘনক্ষেত্রের চেয়ে বেশি এবং পছন্দসইভাবে অনেক বেশি। এর অর্থ, উদাহরণস্বরূপ, একটি (ভাল) 32-বিট এলসিজি প্রায় এক হাজার এলোমেলো সংখ্যা পেতে ব্যবহার করা যেতে পারে; একটি 64-বিট এলসিজি প্রায় 221 এলোমেলো নমুনা (দুই মিলিয়নের একটু বেশি) ইত্যাদির জন্য ভাল। এই কারণে, বাস্তবে এলসিজিগুলি বড় আকারের মন্টে কার্লো সিমুলেশনের জন্য উপযুক্ত নয়। নমুনা কোড পাইথন কোড নিম্নলিখিতটি একটি জেনারেটরের আকারে পাইথনে একটি এলসিজির বাস্তবায়নঃ collections.abc আমদানি জেনারেটর ডেফ এলসিজি থেকে (মডুলাসঃ ইন্ট, এঃ ইন্ট, সিঃ ইন্ট, সিডঃ ইন্ট)-> জেনারেটর [ইন্ট, নন, নন]: "লিনিয়ার কংগ্রুয়েন্সিয়াল জেনারেটর"। যেখানে সত্যঃ বীজ = (a * বীজ + c)% মডুলাস ফলন বীজ মুক্ত পাস্কাল মুক্ত পাস্কাল একটি মার্সেন টুইস্টারকে তার ডিফল্ট ছদ্ম র্যান্ডম নম্বর জেনারেটর হিসাবে ব্যবহার করে যেখানে ডেলফি একটি এলসিজি ব্যবহার করে। উপরের টেবিলের তথ্যের উপর ভিত্তি করে এখানে ফ্রি পাস্কেলের একটি ডেলফি সামঞ্জস্যপূর্ণ উদাহরণ রয়েছে। একই র্যান্ডসিড মান দেওয়া হলে এটি ডেলফির মতো এলোমেলো সংখ্যার একই ক্রম তৈরি করে। ইউনিট lcg _ random; {$iffdef fpc} {$মোড ডেলফি} {$এন্ডিফ} ইন্টারফেস ফাংশন এল. সি. জি. র্যান্ডমঃ বর্ধিত; ওভারলোড; ইনলাইন; ফাংশন এল. সি. জি. র্যান্ডম (কনস্ট রেঞ্জঃ লঙ্গিন্ট): লঙ্গিন্ট; ওভারলোড; ইনলাইন; বাস্তবায়ন ফাংশন আইএমঃ কার্ডিনাল; ইনলাইন; শুরু র্যান্ডসিডঃ = র্যান্ডসিড * 134775813 + 1; ফলাফলঃ = র্যান্ডসিড; শেষ; ফাংশন এল. সি. জি. র্যান্ডমঃ বর্ধিত; ওভারলোড; ইনলাইন; শুরু ফলাফলঃ = আইএম * 2.32830643653870e-10; শেষ; ফাংশন এল. সি. জি. র্যান্ডম (কনস্টঃ লঙ্গিন্ট): লঙ্গিন্ট; ওভারলোড; ইনলাইন; শুরু ফলাফলঃ একাধিক থ্রেড একযোগে এই রাজ্যে প্রবেশ করতে পারে যা একটি রেসের অবস্থার কারণ হতে পারে। প্রয়োগগুলিতে বিভিন্ন থ্রেডের জন্য অনন্য সূচনা সহ বিভিন্ন অবস্থা ব্যবহার করা উচিত যাতে একই সাথে থ্রেডগুলি কার্যকর করার ক্ষেত্রে এলোমেলো সংখ্যার সমান ক্রম এড়ানো যায়। এলসিজি ডেরিভেটিভস বেশ কয়েকটি জেনারেটর রয়েছে যা একটি ভিন্ন আকারে রৈখিক কংগ্রুয়েন্সিয়াল জেনারেটর এবং এইভাবে এলসিজি বিশ্লেষণের জন্য ব্যবহৃত কৌশলগুলি তাদের ক্ষেত্রে প্রয়োগ করা যেতে পারে। দীর্ঘ সময়কাল উৎপাদনের একটি পদ্ধতি হল বিভিন্ন সময়ের বেশ কয়েকটি এল. সি. জি-র আউটপুটের সমষ্টি করা, যার একটি বড় ন্যূনতম সাধারণ গুণিতক রয়েছে; উইচম্যান-হিল জেনারেটর এই রূপের একটি উদাহরণ। (আমরা এগুলি সম্পূর্ণরূপে সহমৌলিক হওয়া পছন্দ করব, তবে একটি মৌলিক মডুলাস একটি জোড় সময়কাল বোঝায়, তাই কমপক্ষে 2 এর একটি সাধারণ ফ্যাক্টর থাকতে হবে।) এটি এল. সি. জি মডুলির গুণফলের সমান মডুলাস সহ একটি একক এল. সি. জি-র সমতুল্য হিসাবে দেখানো যেতে পারে। মার্সাগ্লিয়ার অ্যাড-উইথ-ক্যারি এবং বিয়োগ-সহ-ধার করা পিআরএনজিগুলি শব্দের আকার b = 2w এবং ল্যাগস r এবং s (r> s) সহ ব্র ± bs ± 1 এর মডুলাস সহ এলসিজির সমতুল্য। এ-এর গুণক সহ পিআরএনজি-কে গুণ করলে তা এ. বি. আর-1-এর একটি বড় মৌলিক মডুলাস এবং 2-এর গুণক বি-এর একটি পাওয়ার সহ এল. সি. জি-র সমতুল্য হয়। একটি পারমুটেড কংগ্রুয়েন্সিয়াল জেনারেটর পাওয়ার-অফ-2-মডুলাস এল. সি. জি দিয়ে শুরু হয় এবং নিম্ন-ক্রমের বিটগুলিতে স্বল্প সময়ের সমস্যা দূর করতে একটি আউটপুট রূপান্তর প্রয়োগ করে। অন্যান্য পি. আর. এন. জি-র সঙ্গে তুলনা দীর্ঘমেয়াদী সিউডোরান্ডম সিকোয়েন্স প্রাপ্তির জন্য অন্যান্য ব্যাপকভাবে ব্যবহৃত আদিম হল লিনিয়ার-ফিডব্যাক শিফট রেজিস্টার নির্মাণ, যা জি. এফ (2) [x]-এর গাণিতিক, জি. এফ (2)-এর উপর বহুপদী বলয়ের উপর ভিত্তি করে তৈরি। পূর্ণসংখ্যা সংযোজন এবং গুণনের পরিবর্তে, মৌলিক ক্রিয়াকলাপগুলি একচেটিয়া-বা এবং বহন-কম গুণন, যা সাধারণত যৌক্তিক পরিবর্তনের ক্রম হিসাবে প্রয়োগ করা হয়। এগুলির সুবিধা হল যে তাদের সমস্ত বিট পূর্ণ-সময়কালের হয়; তারা নিম্ন-ক্রমের বিটগুলির দুর্বলতায় ভুগছে না যা গাণিতিক মডুলো 2কে-কে প্রভাবিত করে। এই পরিবারের উদাহরণগুলির মধ্যে রয়েছে জর্শফ্ট জেনারেটর এবং মার্সেন টুইস্টার। পরেরটি একটি খুব দীর্ঘ সময়কাল (219937−1) এবং বৈচিত্র্যময় অভিন্নতা প্রদান করে, তবে এটি কিছু পরিসংখ্যানগত পরীক্ষায় ব্যর্থ হয়। ল্যাগড ফিবোনাচ্চি জেনারেটরগুলিও এই বিভাগে পড়ে; যদিও তারা গাণিতিক সংযোজন ব্যবহার করে, তাদের সময়কাল একটি এল. এফ. এস. আর দ্বারা নিশ্চিত করা হয় যা সবচেয়ে কম গুরুত্বপূর্ণ বিটগুলির মধ্যে একটি। টেস্টইউ01 স্যুটে প্রয়োগ করা রৈখিক জটিলতা পরীক্ষার মতো উপযুক্ত পরীক্ষার মাধ্যমে একটি রৈখিক-প্রতিক্রিয়া স্থানান্তর রেজিস্টারের কাঠামো সনাক্ত করা সহজ; একটি এল. এফ. এস. আর-এর পরপর বিট থেকে শুরু করা একটি বুলিয়ান সার্কুল্যান্ট ম্যাট্রিক্সের কখনই বহুপদের ডিগ্রির চেয়ে বেশি র্যাঙ্ক থাকবে না। একটি অ-রৈখিক আউটপুট মিক্সিং ফাংশন যোগ করা (যেমন xoshiro256 * * এবং পারমুটেড কংগ্রুয়েন্সিয়াল জেনারেটর নির্মাণ) পরিসংখ্যানগত পরীক্ষায় কর্মক্ষমতা ব্যাপকভাবে উন্নত করতে পারে। একটি পিআরএনজি-র জন্য আরেকটি কাঠামো হল একটি খুব সহজ পুনরাবৃত্তি ফাংশন যা একটি শক্তিশালী আউটপুট মিক্সিং ফাংশনের সাথে মিলিত হয়। এর মধ্যে রয়েছে কাউন্টার মোড ব্লক সাইফার এবং নন-ক্রিপ্টোগ্রাফিক জেনারেটর যেমন স্প্লিটমিক্স64। এল. সি. জি-র অনুরূপ একটি কাঠামো, কিন্তু সমতুল্য নয়, তা হল একাধিক-পুনরাবৃত্তিমূলক জেনারেটরঃ এক্স. এন = (এ1এক্স. এন − 1 + এ2এক্স. এন − 2 + ·· + এ. কে. এন − কে) মোড এম। একটি মৌলিক মডুলাসের সাথে, এটি mk−1 পর্যন্ত সময়কাল তৈরি করতে পারে, তাই এলসিজি কাঠামোর বৃহত্তর সময়ের জন্য একটি দরকারী সম্প্রসারণ। উচ্চমানের সিউডোরান্ডম সংখ্যা তৈরির একটি শক্তিশালী কৌশল হল বিভিন্ন কাঠামোর দুই বা ততোধিক পিআরএনজি একত্রিত করা; একটি এলএফএসআর এবং একটি এলসিজির যোগফল (কেআইএসএস বা জরোউ নির্মাণের মতো) গতিতে কিছু খরচে খুব ভাল করতে পারে। আরও দেখুন র্যান্ডম নম্বর জেনারেটরের তালিকা-অন্যান্য পিআরএনজি সহ কিছু উন্নত পরিসংখ্যানগত যোগ্যতা সম্পন্ন এসিওআরএন জেনারেটর-এসিজি-র সঙ্গে বিভ্রান্ত হবেন না, যে শব্দটি এলসিজি এবং এলএফএসআর জেনারেটর পারমুটেড কংগ্রুয়েন্সিয়াল জেনারেটর ফুল সাইকেল ইনভার্সিভ কংগ্রুয়েন্সিয়াল জেনারেটর মাল্টিপ্লাই-উইথ-ক্যারি লেহমার আরএনজি (কখনও কখনও পার্ক-মিলার আরএনজি বলা হয়) কম্বাইন্ড লিনিয়ার কংগ্রুয়েন্সিয়াল জেনারেটর নোটস রেফারেন্স জেন্টল, জেমস ই., (2003)-এর জন্য ব্যবহৃত হয়েছে বলে মনে হয়। র্যান্ডম নম্বর জেনারেশন এবং মন্টে কার্লো মেথডস, 2য় সংস্করণ, স্প্রিংগার। (এই গবেষণাপত্রে, নির্দিষ্ট ছদ্ম-এলোমেলো সংখ্যা উৎপাদক দ্বারা উত্পাদিত ক্রমগুলি অনুমান করার জন্য দক্ষ অ্যালগরিদম দেওয়া হয়েছে)। বাহ্যিক সংযোগ সিমুলেশন লিনিয়ার কংগ্রুয়েন্সিয়াল জেনারেটর প্যারামিটারগুলি পরিচালনা করার সময় ছদ্ম-এলোমেলো সংখ্যার মধ্যে পারস্পরিক সম্পর্ককে কল্পনা করে। র্যান্ডম নম্বর জেনারেশনের নিরাপত্তাঃ একটি অ্যানোটেটেড বিবলিওগ্রাফি লিনিয়ার কংগ্রুয়েন্সিয়াল জেনারেটরস sci.math-এ পোস্ট করে গোল্ডস্টেইন টেকনোলজিস এলএলসি-র "ডেথ অফ আর্ট" কম্পিউটার আর্ট প্রকল্প, পি. এল 'ইকুয়ার এবং আর. সিমার্ড, "টেস্টইউ01: এ সি লাইব্রেরি ফর এম্পিরিকাল টেস্টিং অফ র্যান্ডম নম্বর জেনারেটরস", মে 2006, সংশোধিত নভেম্বর 2006, গাণিতিক সফ্টওয়্যারে এসিএম লেনদেন, 33,4, অনুচ্ছেদ 22, আগস্ট 2007-এর ছবি তৈরি করতে একটি এলসিজি ব্যবহার করে। এলসিজি সিউডোরান্ডম নম্বর জেনারেটর ক্র্যাক করার আরেকটি উপায় সম্পর্কে নিবন্ধ মডুলার গাণিতিক নিবন্ধ উদাহরণস্বরূপ পাইথন (প্রোগ্রামিং ভাষা) কোড সহ