অ্যালগরিদমিক আরএনজি হিসাবে ফরচুনা বা মের্সেন টুইস্টার কি পছন্দনীয়?


19

একটি সাম্প্রতিক উত্তরে একটি মন্টি কার্লো সিমুলেশন বীজের জন্য ফরচুনা বা মার্সেন টুইস্টার র‌্যান্ডম সংখ্যা জেনারেটর ( আরএনজি ) ব্যবহারের কথা উল্লেখ করা হয়েছে । ফরচুনার কথা আমি এর আগে শুনিনি তাই আমি এটি সন্ধান করেছি - দেখে মনে হচ্ছে এটি মূলত ক্রিপ্টোগ্রাফিক ব্যবহারের জন্য is

আমি বর্তমানে কে-মিনস অ্যালগরিদমের বীজ তৈরি করতে প্রোডাকশন কোডে একটি মার্সেন টুইস্টার ব্যবহার করি।

"(অ্যালগরিদমিক বীজ") অ্যাপ্লিকেশনগুলির (উদাহরণস্বরূপ, বন্টন মন্টি কার্লো এবং কে-মিনস) জন্য কোনটি (ফরচুনা বা মের্সেন টুইস্টার) সেরা হিসাবে বিবেচিত হয়? বা এটি একটি "টস আপ" - অর্থাৎ সবচেয়ে সুবিধাজনক ব্যবহার করুন।

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


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

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

ফরচুনা বিরুদ্ধে চিহ্ন - ক্রিপ্টোগ্রাফিক RNGs সম্পর্কে @JM ভাল পয়েন্ট ধীর হচ্ছে
winwaed

তিনি পিআরএনজির একটি ভাল তালিকা এবং বিভিন্ন পরিসংখ্যান যা আপনি আশাবাদী যে এটি সহায়তা করে> boost.org/doc/libs/1_48_0/doc/html/boost_random/…
পাইকথন

Cstdlib এর সাথে আমার সমস্যাটি ছিল গ্রানুলারিটি - কেবলমাত্র RAND_MAX=32768সম্ভাব্য মান। আমি বর্তমানে মন্টি কার্লো রাইক্র্যাকিং সিমের জন্য এমটি ব্যবহার করছি। যাইহোক, আমি আমার প্রোফাইলে এমটিকে পারফরম্যান্সের বাধা হিসাবে দেখছি না , সম্ভবত কারণ আমি রেপ্রিমেস হিসাবে রে দিকনির্দেশের মতো জিনিস "এলোমেলো" তৈরি করি । উদাহরণস্বরূপ, আমি প্রারম্ভকালে 100,000 রশ্মির একটি অ্যারে তৈরি করতে পারি, এগুলিতে একটি অ্যারেতে সঞ্চয় করতে এবং এলোমেলোভাবে রানটাইম এ অ্যারে শুরুর অবস্থানটি নির্বাচন করি (10,000 রশ্মি বা সংগ্রহের জন্য চলমান)। ভাল এলোমেলো সংখ্যার বিতরণের বিনিময়ে এটির তুলনামূলকভাবে বেশি মেমরি রয়েছে।
বোবোবো

উত্তর:


14

ঠিক আছে, সবকিছুই কোনও না কোনও বা অন্যরকমের বাণিজ্য। এলোমেলো সংখ্যা জেনারেটরের জন্য, আমি তাদের 3 টি মূল বিভাগে গ্রুপ করি:

  1. বাড়ির কাজের জন্য যথেষ্ট ভাল।
  2. আপনার কোম্পানির উপর বাজি ধরতে যথেষ্ট ভাল।
  3. আপনার দেশের উপর বাজি ধরতে যথেষ্ট ভাল।

লিনিয়ার কংগ্রেসনাল পিআরএনজি (সাধারণত বেশিরভাগ লাইব্রেরিতে প্রয়োগ করা পদ্ধতি) 1 টি বিভাগে দৃ are়ভাবে রয়েছে ফরচুনা এবং মের্সেন টুইস্টার উভয়ই দৃ category়ভাবে 2 বিভাগে।

কীভাবে কোনও শিফালিং অ্যালগরিদমকে গণ্ডগোল করা আপনার কোম্পানির / ক্যাসিনোগুলিকে ব্যয় করতে পারে তার একটি আকর্ষণীয় নিবন্ধের জন্য, আমি 1999 সাল থেকে এটির একটি প্রস্তাব করছি । লিঙ্ক পচনের কারণে, চিত্রগুলি চলে গেছে, তবে চিত্র 4, আপনি যেখানে পূর্ববর্তী সংখ্যাটি তৈরি করেছেন তার বিপরীতে পিআরএনজি থেকে পরবর্তী সংখ্যাটি প্লট করেছেন, এটি সমান্তরাল রেখার একটি সেট।

জেএম উল্লেখ করে বলে, ফরচুনা ধীর গতিতে। যেমনটি আপনি উল্লেখ করেছেন, মার্সেন টুইস্টার যুক্তিসঙ্গতভাবে দ্রুত।


2
নিবন্ধটির মুদ্রণযোগ্য সংস্করণটি দিয়ে দ্রুত স্কিমিং করা , "চিত্র 4" ছবির পরিবর্তে কোড বলে মনে হচ্ছে। "চিত্র 5" কেমন লাগে দফা রফা কিন্তু এই ইমেজ থেকে আমি পেয়েছিলাম WayBack মেশিন
জেএম

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

আরও ভাল ছবি সহ অন্য সংস্করণটি হ'ল: সিগিটাল
পেপারস

1
32 বিট আউটপুট সহ 96-বিট এলসিজি মার্সেন টোয়েস্টারের চেয়ে বেশি পরিসংখ্যান পরীক্ষায় পাস করে। প্রতি অর্থবহ বিষয়ে এমটি-র চেয়ে অনেক ভাল যে শালীন নন-ক্রিপ্টোগ্রাফিক পিআরএনজি তৈরি করা এত সহজ, এখনই কারও কারও মরসেন টুইস্টার ব্যবহার করা উচিত নয়।
Veedrac

4

আমি মনে করি "ক্রিপ্টোগ্রাফিক" বিভাগের ডিফল্ট পছন্দটি ব্লাম-ব্লাম-শাব I উইকিপিডিয়া পৃষ্ঠাটি ইতিমধ্যে বলেছে, এটি সিমুলেশনগুলির জন্য উপযুক্ত নয় কারণ এটি খুব ঘোরতর ধীর।

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

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


লিনাক্স এবং ফ্রি-বিএসডি-তে ক্রিপ্টোগ্রাফির জন্য / dev / urandom ব্যবহার করা নিরাপদ। এই উত্তরটি দেখুন
অ্যাডাম কুরকিউইচ

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

2

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


0

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

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

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