এলোমেলো সংখ্যার জন্য রৈখিক একত্রিত জেনারেটরের গুণমান


14

আমি বিভিন্ন বাহ্যিক শক্তির জন্য ল্যাঞ্জভিন সমীকরণের কিছু সিমুলেশন করছি। সি এর rand()কাছ থেকে জানা গেছে যে stdlib.hআমার ফলাফলগুলিতে পক্ষপাতিত্ব পরিচয় করিয়ে দিতে পারে, আমি একটি মার্সেন টুইস্টার ব্যবহার করছি।

তবুও, আমি জানতে চাই (এবং দেখুন) ঠিক কী ধরনের ত্রুটিগুলি একটি লিনিয়ার কংগ্রেস জেনারেটর আমার সিমুলেশনটিতে প্রবর্তন করতে পারে। এগুলি আমি চেষ্টা করেছি:

  • হাইপারপ্লেন দেখার চেষ্টা করার জন্য এলোমেলোভাবে 3 ডি টুপলস উত্পাদন করা। আমি কিছুই দেখতে পাচ্ছি না
  • এলোমেলো সংখ্যার একটি বৃহত্তর ভেক্টরের এফএফটি করছেন। এটি মার্সেন টুইস্টার এবং উভয়ের জন্য প্রায় একই rand()
  • ব্রাউনিয়ান গতিতে একটি কণার জন্য উপকরণ নীতি পরীক্ষা করা। উভয় integrators প্রত্যাশিত মান সম্মত একই সংখ্যার উল্লেখযোগ্য সংখ্যা সহ 2 কেবিটিKE=12kBT
  • তারা দেখতে পাচ্ছেন যে তারা কতটা বিন্দুতে বিন্দু বিনা দ্বিধাবিভক্ত of উভয়ই একই গুণগত ফলাফল দেয়, এর চেয়ে ভাল আর কেউ হয় না।
  • Brownian পাথ এ খুঁজছি থেকে পরিষ্কার প্রভেদ দেখতে । আবার, ভাগ্য নেই।x=0
  • একটি বৃত্তে পয়েন্ট বিতরণ। ভরাট, এবং শুধুমাত্র ঘের মধ্যে। তাদের সবার মধ্যে এবং নিকটতম প্রতিবেশীদের মধ্যে (শোরের উত্তর, মন্তব্যে নীচে)। এখানে পাওয়া যাবে এই সারকথা , শুধু এটা জুলিয়া 0.5.0 সঙ্গে প্রয়োজন লাইব্রেরি ইনস্টল করার পরে চালানো (নির্দেশাবলীর জন্য সারকথা দেখুন)।

আমি জোর দিয়ে বলতে চাই যে আমি শারীরিক অনুকরণের প্রসঙ্গে প্রবর্তিত পক্ষপাতের সন্ধান করছি। উদাহরণস্বরূপ, আমি দেখেছি rand()যে মার্সেন টুইস্টার যখন না করেন তবে ডায়াহার্ডার টেস্টগুলি কীভাবে মারাত্মকভাবে ব্যর্থ হয়, তবে সেই মুহুর্তের জন্য যা আমার পক্ষে খুব বেশি বোঝায় না।

খারাপ র্যান্ডম সংখ্যার জেনারেটর কীভাবে মনটেকারলো সিমুলেশন নষ্ট করে দেয় তার কোনও শারীরিক, কংক্রিটের উদাহরণ রয়েছে কি?

দ্রষ্টব্য: আমি দেখেছি যে পিআরএনজির পছন্দগুলি কীভাবে RANDUভয়ঙ্কর হতে পারে। আমি স্পষ্ট উদাহরণ নয়, জেনারেটরের যে নিরপরাধ দেখায় কিন্তু শেষ পর্যন্ত পক্ষপাতিত্ব প্রবর্তন করতে আগ্রহী।


1
আপনার অনুরোধকৃত উদাহরণগুলি রাখবেন না, তবে নিজের সি প্রোগ্রামগুলিতে র্যান্ড () / শ্রান্ড () এর পরিবর্তে ড্র্যান্ড 48 () / স্র্যান্ড 48 () ব্যবহার করছেন। তাদের নিজ নিজ ম্যান পেজগুলি বিভিন্ন ব্যবহৃত prg অ্যালগরিদমগুলি নথী করে (র্যান্ডের অ্যালগোরিদমের জন্য মানুষ এলোমেলো দেখুন) এবং আমি বিশ্বাস করি যে ড্র্যান্ড ৪৮ সাধারণত পছন্দনীয়, যদিও আমার বিস্তারিত বোঝাপড়াটি অদৃশ্যভাবে ছোট। আমি যখন প্ল্যাটফর্ম জুড়ে গ্যারান্টেড পোর্টেবল প্রজননযোগ্যতা চাই, আমি সি, দ্বিতীয় সংস্করণ, হুইপ্রেস, এট আল, কেমব্রিজ ইউপি 1992, আইএসবিএন 0-521-43108-5, পৃষ্ঠা 280 তে সংখ্যাসূচক রেসিপিগুলি থেকে রান 1 () কোড করেছিলাম up আমি বলতে পারি, তবে পরিমাণগতভাবে পরীক্ষা করিনি।

এলোমেলো () বা ড্র্যান্ড 48 () / ল্যান্ডেন্ড 48 () ব্যবহার করুন (আমি পাশাপাশি আণবিক গতিবিদ্যা এবং মন্টে কার্লো সিমুলেশনগুলির জন্য পরবর্তীটি ব্যবহার করি এবং এটি বেশ ভাল)। এছাড়াও, এলোমেলো বীজ ব্যবহার করার চেষ্টা করুন। এটি একক কণা ল্যাঙ্গভিনের সমীকরণের অনুকরণের জন্য পর্যাপ্ত পরিমাণের চেয়ে বেশি হওয়া উচিত।
ভালেরিও

আমরা বৃত্ত নয়, একটি পরিধি ব্যবহার করেছি।

@ পিটারশোর সংশোধন করার জন্য আপনাকে ধন্যবাদ। আমি উত্তর আপডেট করেছি, এখনও ভাগ্য আমি ভীত না।
রেডপয়েন্টি জ্যাকসন

1
@ ড্যানিয়েল শ্যাপারো এলোমেলো এবং ইউরেনডমকে ক্রিপ্টোগ্রাফিকভাবে সুরক্ষিত আরএনজি হিসাবে মনে করা হচ্ছে, কী তৈরির মতো ক্রিপ্টোগ্রাফিক উদ্দেশ্যে তৈরি করা হয়েছিল for এর হার্ডওয়্যার দিকটি হ'ল লিনাক্সে তারা পরিবেশগত এনট্রপি ব্যবহার করে, এটি হার্ডওয়্যার-এক্সিলার্টের মতো নয়। মন্টি কার্লো সিমুলেশনগুলির মতো কোনও কিছুর জন্য তারা আসলেই উদ্দেশ্যযুক্ত নয়।
কিরিল

উত্তর:


3

একটি আকর্ষণীয় উল্লেখ যা অপর্যাপ্ত আরএনজি (যদিও তারা এলসিজি ব্যবহার করেনি) কারণে কোনও শারীরিক সিস্টেমের মন্টে কার্লো সিমুলেশন ব্যর্থতার বর্ণনা দেয়:

উঃ ফেরেনবার্গ এবং ডিপি ল্যান্ডাউ। মন্টি কার্লো সিমুলেশন: "ভাল" র্যান্ডম নম্বর জেনারেটর থেকে লুকানো ত্রুটি। শারীরিক পর্যালোচনা পত্র 63 (23): 3382-3384, 1992।

ফেরেনবার্গ এবং ল্যান্ডুয়া যে আইসিং মডেলগুলি অধ্যয়ন করেছেন সেগুলি আরএনজি'র ভাল পরীক্ষা কারণ আপনি একটি সঠিক সমাধানের সাথে তুলনা করতে পারবেন (২-ডি সমস্যার জন্য) এবং অঙ্কগুলি খুঁজে বের করার উপায় খুঁজে বের করতে পারেন। এই মডেলগুলি খুব বেশি অসুবিধা ছাড়াই একটি পুরানো ফ্যাশন 32 বিট পাটিগণিত পিএমএমএলসিজিতে ত্রুটিগুলি প্রদর্শন করা উচিত।

আর একটি আকর্ষণীয় উল্লেখ হল:

এইচ। বাউকে এবং স্টিফান মার্টেনস। সিউডো এলোমেলো কয়েনগুলি লেজের চেয়ে বেশি মাথা দেখায়। আরএক্সিভি: কনড-মাদুর / 0307138 [কনড-ম্যাট.স্ট্যাট-মেছ]

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

3 ডি স্ক্যাটার প্লটটিতে মার্সাগলিয়া প্লেনগুলি পাওয়া কঠিন হতে পারে। আরও ভাল দর্শন পেতে আপনি প্লটটি ঘোরানোর চেষ্টা করতে পারেন এবং কখনও কখনও তারা আপনাকে পপআপ করে দেয়। আপনি পরিসংখ্যানগত অভিন্নতার 3 ডি পরীক্ষাও করতে পারেন- পুরানো 32 বিট এলসিজির জন্য, এগুলি খুব কম সংখ্যক বিনগুলিতে ব্যর্থ হবে। উদাহরণস্বরূপ, এম = 2 20 31-1, এ = 7 3 5 এর সাথে পিএমএলএমসিজি বিস্তৃতভাবে ব্যবহৃত (এবং পূর্বে ভাল বিবেচিত) পিএমএলসিজি-র জন্য 3 টি মাত্রায় বিন্যাসের 20x20x20 গ্রিডের সাথে অভিন্নতা পরীক্ষা যথেষ্ট।


1

এটা ব্যবহার করা সম্ভব TestU01 স্যুট অর্ডার জানতে হবে PRNG পরীক্ষার যা ঐ পরীক্ষার randব্যর্থ। ( পরীক্ষার স্যুটটি পর্যালোচনা করার জন্য টেস্টইউ 01: এন্ড লাইব্রেরিটি র্যান্ডম নম্বর জেনারেটরের পরীক্ষামূলক পরীক্ষার জন্য)) নিজের মন্টি কার্লো সিমুলেশনগুলির সাথে আসা আরও সহজ। একরকম, এটি সফ্টওয়্যার কম্পোজেবিলিটি (এবং সফ্টওয়্যার যথার্থতা) এরও একটি প্রশ্ন: একটি পিআরএনজি দেওয়া আছে যা ছোট, সাধারণ পরীক্ষায় ঠিকঠাকভাবে কাজ করে বলে মনে হয়, আপনি কীভাবে জানেন যে এর রোগতাত্ত্বিক আচরণগুলি বৃহত্তর প্রোগ্রামের দ্বারা ট্রিগার করা হবে না?

কোডটি এখানে:

#include "TestU01.h"

int main() {
  // Same as rand() on my machine
  unif01_Gen* gen = ulcg_CreateLCG(2147483647, 16807, 0, 12345);

  bbattery_SmallCrush(gen);
  bbattery_Crush(gen);

  return 0;
}

জন্য SmallCrush স্যুট, সেখানে 3 15 থেকে বের ব্যর্থ পরীক্ষা নেই (দেখুন guidelongtestu01.pdf দীর্ঘ বিবরণ এবং সব রেফারেন্সের জন্য TestU01 মধ্যে; এই 10 টেস্ট থেকে 15 পরিসংখ্যান)।

  • n tdtdtI1,{Ij+1Ij}

  • n t[0,1)tdt

  • nt[0,1)XnP(X<x)=xtn=2×106t=6χ2<10300

এই সমস্ত "টিপিকাল" মন্টি কার্লো সিমুলেশনগুলি ধরে নিলে (যদিও এটি আপনার মনে থাকা সমস্যার মতো নাও হতে পারে), উপসংহারটি হ'ল এগুলির randকিছু অজানা উপসেট ব্যর্থ। আমি কেন জানি না কেন এটি বিশেষত সাবসেট, তবে এটি নিজের সমস্যাতে কাজ করবে কিনা তা আমার পক্ষে বলা অসম্ভব।

বর্ণনাটি কতটা সহজবোধ্য দেওয়া ম্যাক্সফুট বিশেষত সন্দেহজনক বলে মনে হয়।

ক্রাশ স্যুটে পরীক্ষাগুলির মধ্যে rand140 এর মধ্যে 51 টি ব্যর্থ হয়েছে (96 টি পরীক্ষায় 140 পরিসংখ্যান)। কিছু ব্যর্থ পরীক্ষা (যেমন ফুরিয়ার 3 ) বিট স্ট্রিংয়ে সম্পন্ন হয়, সম্ভবত এটি সম্ভবত আপনার সাথে প্রাসঙ্গিক না হয়। আর একটি কৌতূহল পরীক্ষা যা ব্যর্থ হয় তা হ'ল জিসিডি , যা দুটি এলোমেলো পূর্ণসংখ্যার জিসিডি বিতরণ পরীক্ষা করে। (আবারও, আমি জানি না কেন এই নির্দিষ্ট পরীক্ষাটি ব্যর্থ হয় বা আপনার অনুকরণটি এতে ভুগবে কিনা))

পিএস : তবুও অন্য একটি বিষয় লক্ষণীয় হ'ল rand()কিছু পিআরএনজির তুলনায় আসলে ধীরগতিতে যেগুলি এমআরজি 32 কে 3 এ ( উপরের এল'ইকায়ার এবং সিমার্ড পেপার দেখুন) সফলভাবে সমস্ত স্মলক্রাশ , ক্রাশ , বিগক্রাশ পরীক্ষা সফলভাবে পাস করেছে ।

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