এলোমেলো সংখ্যা জেনারেটরে একটি বীজ ঠিক কী?


21

আমি কিছু সাধারণ গুগল অনুসন্ধান ইত্যাদি চেষ্টা করেছিলাম তবে বেশিরভাগ উত্তর আমার কাছে হয় কিছুটা অস্পষ্ট বা ভাষা / গ্রন্থাগার নির্দিষ্ট যেমন পাইথন বা সি ++ stdlib.hইত্যাদির জন্য আমি কোনও ভাষার অজ্ঞাবলিক, গাণিতিক উত্তর খুঁজছি, কোনও গ্রন্থাগারের নির্দিষ্টকরণ নয়।

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

এছাড়াও, এই প্রসঙ্গে একটি সূচনা পয়েন্টটির অর্থ কী? এটি কোনও মানচিত্রের ডোমেনের একটি উপাদান বলার একটি অ-কঠোর উপায় f : XY ? নাকি আমার কিছু ভুল হচ্ছে?xXf:XY


7
আমি কোনও উত্তর লেখার যোগ্য মনে করি না তবে আপনি মিরসেন টুইস্টার আলোকিতকরণ, বিশেষত আরম্ভের অংশে উইকিপিডিয়া নিবন্ধটি খুঁজে পেতে পারেন । সংক্ষেপে, মার্সেন টুইস্টার এর মতো সিউডোরডম সংখ্যা জেনারেটর শেষ পর্যন্ত এর ফলাফলটি পুনরুক্ত করবে। এমটি ক্ষেত্রে সময়কাল দৈর্ঘ্য হয় 2^19937 − 1। বীজ এই অত্যন্ত দীর্ঘ ক্রমের বিন্দু যেখানে জেনারেটর শুরু হয়। হ্যাঁ, এটি নির্বিচারবাদী।
অয়নিক সলিউশন

1
একটি সিউডো-এলোমেলো সংখ্যা জেনারেটর হ'ল অবিরামভাবে সংখ্যার নির্দিষ্ট তালিকা পুনরাবৃত্তি করে। এটি কোথায় শুরু হয়? আপনি বলতে পারেন।
হোবল

2
@ তবে আমি আসলে আপনার মন্তব্যটি একটি দুর্দান্ত উত্তর হবে বলে মনে করি।
ডেভিড জেড

উত্তর:


22

বেশিরভাগ সিউডো-এলোমেলো সংখ্যার জেনারেটর (পিআরএনজি) "বীজ" নামক একটি ইনপুট দ্বারা নির্ধারিত একটি বেস মান থেকে শুরু করে কিছু ধরণের পুনরাবৃত্ত পদ্ধতিতে জড়িত অ্যালগরিদমগুলিতে তৈরি হয়। বেশিরভাগ পরিসংখ্যান সংক্রান্ত সফ্টওয়্যার (আর, পাইথন, স্টাটা, ইত্যাদি) -এর ডিফল্ট পিআরএনজি হ'ল মরসেন টুইস্টার অ্যালগরিদম এমটি 19937, যা মাতসুমোটো এবং নিশিমুরা (1998) এ সেট করা হয়েছে । এটি একটি জটিল অ্যালগরিদম, সুতরাং এটি কীভাবে বিশদে কাজ করে তা জানতে চাইলে এটির উপরের কাগজটি পড়া ভাল best এই বিশেষ অ্যালগরিদম, সেখানে ডিগ্রী একটি পুনরাবৃত্তি সম্পর্ক নেই , এবং আপনার ইনপুট বীজ ভেক্টর ইনিশিয়াল সেট এক্স 0 , এক্স 1 , ,n । অ্যালগরিদম একটি লিনিয়ার পুনরাবৃত্তি সম্পর্ক ব্যবহার করে যা উত্পন্ন করে:x0,x1,...,xn1

xn+k=f(xk,xk+1,xk+m,r,A),

যেখানে এবং r এবং A এমন বস্তু যা অ্যালগরিদমে প্যারামিটার হিসাবে নির্দিষ্ট করা যায়। যেহেতু বীজ ভেক্টরগুলির প্রাথমিক সেট দেয় (এবং অ্যালগোরিদমের জন্য অন্যান্য নির্দিষ্ট পরামিতি দেওয়া হয়), তাই অ্যালগরিদমের দ্বারা উত্পন্ন সিউডো-এলোমেলো সংখ্যার সিরিজটি স্থির হয়। আপনি যদি বীজ পরিবর্তন করেন তবে আপনি প্রাথমিক ভেক্টর পরিবর্তন করুন, যা অ্যালগরিদমের দ্বারা উত্পন্ন সিউডো-র্যান্ডম সংখ্যার পরিবর্তন করে। এটি অবশ্যই বীজের কার্যকারিতা।1mnrA

এখন, এটি লক্ষ করা জরুরী যে এটি কেবল একটি উদাহরণ, MT19937 অ্যালগরিদম ব্যবহার করে। অনেকগুলি পিআরএনজি রয়েছে যা পরিসংখ্যান সংক্রান্ত সফ্টওয়্যারগুলিতে ব্যবহার করা যেতে পারে এবং এগুলির প্রতিটি পৃথক পুনরাবৃত্ত পদ্ধতিতে জড়িত এবং তাই বীজের অর্থ তাদের প্রত্যেকটিতে একটি আলাদা জিনিস (প্রযুক্তিগত দিক থেকে)। এই ডকুমেন্টেশনের জন্য Rআপনি PRNGs এর একটি লাইব্রেরি খুঁজে পেতে পারেন , যা উপলব্ধ অ্যালগরিদম এবং এই অ্যালগরিদমগুলি বর্ণনা করে এমন কাগজপত্রগুলি তালিকাভুক্ত করে।

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


+1 টি। যদি কেউ স্পষ্টভাবে বীজ সরবরাহ না করে তবে কী (সাধারণত) ঘটে তা যুক্ত করা ভাল।
অ্যামিবা বলেছেন

1
@ আমেবা: আমার উত্তরের চতুর্থ অনুচ্ছেদটি এ সম্পর্কে সংক্ষেপে আলোচনা করে।
ব্রুসেট

1
যদিও এটি প্রশ্নের মূল বিষয়গুলির উত্তর দেয় it এটি অনুকরণে কেন আমাদের এটি প্রয়োজন তা স্পর্শ করে না। সত্যিকারের এলোমেলো উত্পাদন করা খুব কঠিন - এবং যখন আপনার কাছে আসল উত্তরটি পুনরুত্পাদন করা যায় না! সমস্ত সমস্যা সহ পিএনআরজি প্রবেশ করান।
পল পলপ্পে 21

@ অ্যামিবা: অনুরোধ অনুসারে, আমি এটিতে আরও অতিরিক্ত অনুচ্ছেদ যুক্ত করেছি।
মনিকা

1
ধন্যবাদ। "ডিফল্ট বীজ" কিছুটা শোনায় এটি বীজের সর্বদা একই ডিফল্ট মান; আমি যেটি বোঝাতে চাইছিলাম তা হ'ল সাধারণত বীজটি সিস্টেম ক্লক থেকে নেওয়া হয়। এটি আমার জানা ভাল।
অ্যামিবা বলছেন মনিকা পুনর্নির্ধারণ

16

প্রথমত, আজকের কম্পিউটারে সত্যিকারের এলোমেলোতা নেই "এলোমেলো সংখ্যা" generated সমস্ত সিউডোর্যান্ডম জেনারেটর ডিটারমিনিস্টিক পদ্ধতি ব্যবহার করে। (সম্ভবত, কোয়ান্টাম কম্পিউটারগুলি এটি পরিবর্তন করবে))

কঠিন কাজ হ'ল অ্যালগরিদমগুলি প্রস্তুত করা যা আউটপুট উত্পাদন করে যা সত্যিকারের এলোমেলো উত্স থেকে আসা ডেটা থেকে অর্থপূর্ণভাবে আলাদা করা যায় না।

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

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

(0,1).

Unif(0,1)

set.seed(1776);  m = 50000
par(mfrow=c(1,2))
  u = runif(m);  plot(u[1:(m-1)], u[2:m], pch=".")
  u = runif(m);  plot(u[1:(m-1)], u[2:m], pch=".")
par(mfrow=c(1,1))

এখানে চিত্র বর্ণনা লিখুন

এটি কখনও কখনও বীজ সেট করতে দরকারী। এরকম কয়েকটি ব্যবহার নিম্নরূপ:

  1. প্রোগ্রামিং এবং ডিবাগিংয়ের সময় অনুমানযোগ্য আউটপুট রাখা সুবিধাজনক। অনেক প্রোগ্রামার set.seedলেখার শুরু এবং ডিবাগিং না হওয়া পর্যন্ত কোনও প্রোগ্রামের শুরুতে একটি বিবৃতি দেয়।

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

    আমি যদি শুরুতে একটি বীজ সেট করি তবে প্রতিবার সিমুলেশন একই ফলাফল পাবে। শিক্ষার্থীরা আমার প্রোগ্রামের তাদের অনুলিপিটি প্রুফ্রেড করতে পারে তা নিশ্চিত করার জন্য এটি ফলাফলটি দেয়। তারপরে তারা নিজস্ব বীজ দিয়ে বা প্রোগ্রামটিকে নিজস্ব শুরুর জায়গা বাছাই করে তাদের নিজস্ব সিমুলেশন চালাতে পারে।

    3/36=1/12=0.08333333.
    2(1/12)(11/12)/106=0.00055.
    set.seed(703);  m = 10^6
    s = replicate( m, sum(sample(1:6, 2, rep=T)) )
    mean(s == 10)
    [1] 0.083456         # aprx 1/12 = 0.0833
    2*sd(s == 10)/sqrt(m)
    [1] 0.0005531408     # aprx 95% marg of sim err.
    
  3. শেয়ার করার সময় পরিসংখ্যান জড়িত পরিসংখ্যান বিশ্লেষণ। আজকাল অনেক পরিসংখ্যান বিশ্লেষণে কিছু সিমুলেশন জড়িত থাকে, উদাহরণস্বরূপ একটি অনুক্রম পরীক্ষা বা গিবস নমুনা। বীজ দেখিয়ে, আপনি বিশ্লেষণটি পড়া লোকদের তারা ফলাফলগুলি ঠিকঠাকভাবে প্রতিলিপি করতে সক্ষম করেন, যদি তারা চান।

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


1
খুব সুন্দর, +1। আমি একটি চতুর্থ পয়েন্ট যুক্ত করার স্বাধীনতা গ্রহণ।
এস। কোলাসা - মনিকা

সুতরাং আপনার অর্থ কি সিউডোরড্রোম সংখ্যা জেনারেটর মূলত এলোমেলো সংখ্যার পর্যায়ক্রমিক ক্রম ([0, 1] তে সমানভাবে বিতরণ করা) সংরক্ষণ করে এবং একটি বীজ কেবলমাত্র ক্রমটির সূচক? সুতরাং এর অর্থ কি উত্পন্ন এলোমেলো সংখ্যাটি বীজের একটি নির্ধারিত ফাংশন?
দেলা

9
আপনি ব্যবহার কোয়ান্টাম ঘটনা কোয়ান্টাম কম্পিউটার প্রয়োজন হবে না একটি র্যান্ডম জেনারেটর (আছে en.wikipedia.org/wiki/Hardware_random_number_generator )
Guiroux

1
2199371, যা আমি সহজেই কল্পনা করতে পারি। // আপনি যদি বীজটি জানেন তবে আপনি সেখান থেকে সিউডোরান্ডম সিক উত্পাদন করতে পারেন। // বার্তাগুলি এনক্রিপ্ট করতে জেনারেটর ব্যবহার করা হয়েছে। তবে এনক্রিপশনের জন্য সুরক্ষিত জেনারেটরের মান সম্ভাব্যতা সিমুলেশনের জন্য জেনারেটরের মান থেকে পৃথক।
ব্রুসেট

@Guiroux। আমি পুনরায় কোয়ান্টাম কম্পিউটারগুলির উল্লেখ করার চেষ্টা করছিলাম তা হ'ল আজকের সিউডোরেন্ডম জেনারেটরগুলির মতো দ্রুত এলোমেলো সংখ্যা জেনারেটর থাকা উচিত। 1950 এর দশকে 'সত্য' র্যান্ডম সংখ্যার উত্স পরীক্ষামূলক নকশায় এবং (ধীর, সীমাবদ্ধ) প্রোব সিমুলেশনগুলির জন্য র্যান্ডমাইজেশনের জন্য ব্যবহৃত হয়েছিল। সম্ভবত মিলিয়ন র‌্যান্ডম অঙ্কগুলি দেখুন
ব্রুসেট

0

টি এল; ডিআর;

একটি বীজ সাধারণত আপনাকে এলোমেলো সংখ্যার ক্রম পুনরুত্পাদন করতে সক্ষম করে। সেই অর্থে এগুলি সত্যিকারের এলোমেলো সংখ্যা নয় তবে "সিউডো এলোমেলো সংখ্যা", সুতরাং পিএনআর জেনারেটর (পিএনআরজি)। এগুলি বাস্তব জীবনে আসল সহায়ক!

আরও কিছু বিশদ:

কার্যত কম্পিউটারের ভাষায় প্রয়োগ করা সমস্ত "এলোমেলো" নাম্বার জেনারেটরগুলি সিউডো এলোমেলো সংখ্যা জেনারেটর। এটি কারণ যে কোনও শুরুর মান দেওয়া হয় (===> বীজ) তারা সর্বদা সিউডো এলোমেলো ফলাফলের একই ক্রম সরবরাহ করবে। একটি ভাল জেনারেটর একটি ক্রম উত্পাদন করে যা আলাদা করা যায় না - পরিসংখ্যানগত দিক থেকে - সত্যিকারের এলোমেলো ক্রম থেকে (একটি সত্যিকারের ডাই, সত্যিকারের মুদ্রা নিক্ষেপ করুন)।

অনেক সিমুলেশন ক্ষেত্রে আপনি একটি সত্য "র্যান্ডম" অভিজ্ঞতা থাকতে চান have তবে, আপনি নিজের ফলাফল পুনরুত্পাদন করতে সক্ষম হতে চান। কেন? ভাল, কমপক্ষে নিয়ামকরা সেই অদ্ভুত বিষয়ে আগ্রহী।

ডুব দেওয়ার মতো অনেক কিছুই আছে। এমনকি লোকেরা "সেরা" এলোমেলো বীজের বিশ্লেষণও করে। আমার মতে এটি তাদের মডেলকে অকার্যকর করে দেয় কারণ তারা "সত্য" এলোমেলো আচরণ পরিচালনা করতে পারে না - বা তাদের পিআরএনজি তাদের প্রয়োগের জন্য উপযুক্ত নয়। বেশিরভাগ সময় তারা কেবল পর্যাপ্ত সিমুলেশন করে না - তবে তারা সময় নেয়।

এখন একটি "সত্য" আরএনজি কল্পনা করুন। মেশিনে একরকম এলোমেলোতার ভিত্তিতে এটি প্রয়োগ করতে পারে। যদি আপনি কেবল একটি এলোমেলো বীজ নেন (যেমন এখন সময়) আপনি এলোমেলো শুরুর একধরণের বিন্দু তৈরি করেন তবে ক্রমটির এলোমেলোতা পরবর্তী সংখ্যাগুলি নির্ধারণের জন্য এখনও অ্যালগরিদমের উপর নির্ভর করে। ফলাফলের বিতরণ প্রকৃত "ফলাফল" নির্ধারণ করায় এটি বেশিরভাগ ক্ষেত্রে সূচনা পয়েন্টের চেয়ে গুরুত্বপূর্ণ more যদি আপনার ক্রমটি সত্যই এলোমেলো হওয়া উচিত তবে আপনি কীভাবে এটি বাস্তবায়ন করবেন? একটি কম্পিউটারের ক্লক টিকগুলি ডিটারমিনিস্টিক হিসাবে বলা যেতে পারে এবং অন্যথায় সম্ভবত প্রচুর পরিমাণে স্বয়ংক্রিয় সম্পর্ক রয়েছে। তো তুমি কি করতে পার? এখন পর্যন্ত সবচেয়ে ভাল বাজি হ'ল একটি শক্ত পিএনআরজি বাস্তবায়ন করা।

কোয়ান্টাম কম্পিউটিং? আমি নিশ্চিত না যে এটি ঠিক করবে।

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.