সিউডোর্যান্ডম এবং সত্যিকারের এলোমেলো সংখ্যাগুলি কীভাবে আলাদা এবং কেন এটি গুরুত্বপূর্ণ?


665

আমি এটিকে কখনই পাইনি। কেবলমাত্র আপনি কোনও ভাষাতে একটি ছোট প্রোগ্রাম লিখুন যা কিছু ডাইস রোল করে (কেবল উদাহরণ হিসাবে ডাইস ব্যবহার করে)। 600,000 রোলগুলির পরে, প্রতিটি সংখ্যা প্রায় 100,000 বার ঘূর্ণিত হত, যা আমি প্রত্যাশা করি।

কেন সেখানে 'সত্যিকারের এলোমেলো' ডেডিকেটেড ওয়েবসাইট রয়েছে? অবশ্যই, উপরের পর্যবেক্ষণের ভিত্তিতে, যে কোনও সংখ্যা যে কোনও সংখ্যক এটি বেছে নিতে পারে তার চেয়ে প্রায় 1 টির সম্ভাবনা প্রায় 1।

আমি পাইথনে চেষ্টা করেছি : এখানে 60 মিলিয়ন রোলসের ফলাফল। সর্বোচ্চ প্রকরণটি 0.15 এর মতো। এটি পেতে হিসাবে এটি কি এলোমেলো না?

1 - 9997653 2347.0
2 - 9997789 2211.0
3 - 9996853 3147.0
4 - 10006533 -6533.0
5 - 10002774 -2774.0
6 - 9998398 1602.0

1
হার্ডওয়্যার উত্পন্ন এলোমেলো সংখ্যার উইকিপিডিয়া নিবন্ধটি একবার দেখুন - এগুলি
স্থিতিশীল

21
"কিছু ডাল রোলস" বলতে কী বোঝ? এটিতে কি একটি রোবট বাহু এবং ক্যামেরা সংযুক্ত রয়েছে?
স্টার ব্লু

3
আমি যখন আপনার সুরের সাধারণ বক্তব্যটির সাথে একমত হই, আমরা প্রায়শই এটি নিয়ে খুব বেশি উদ্বেগ প্রকাশ করি তবে এটি বাস্তব জীবনে শোষণ করা হয়েছে: en.wikedia.org/wiki/ রোনাল্ড_ডেলহ্যারিস
গ্রেডি প্লেয়ার

3
কোনও অনলাইন পোকার গেমটি কেন গুরুত্বপূর্ণ তা সম্পর্কে সত্যিকারের এলোমেলোতা অনুপস্থিত এই নিবন্ধটি দেখুন ।
ভারাাকিলেক্স

1
যদি আপনি কেবল 0-5 টি কাউন্টার রাখেন এবং সেই অনুসারে একটি ডাইস ঘূর্ণিত হন, আপনিও সমান বন্টন পাবেন an
jcora

উত্তর:


1384

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

আমি আমার হাতে পাঁচটি কার্ড পেয়েছি - স্পষ্টতই আমরা টেক্সাস হোল্ড 'এম খেলছি না। ধরা যাক কার্ডগুলি আমার কাছে একটি বিতরণ করা হয়েছে, একটি আপনার কাছে, একটি আমার কাছে, একটি আপনার কাছে এবং আরও অনেক কিছু। সুতরাং আমি ডেক প্রথম, তৃতীয়, পঞ্চম, সপ্তম এবং নবম কার্ড আছে।

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

ধরুন আমার দ্বিতীয় কার্ডটি হৃদয়ের তিনটি। এখন আমি আমার আরএনজি আরও ৮০ মিলিয়ন বার চালিয়েছি ৮০ মিলিয়ন বীজ ব্যবহার করে যে কোদালদের রানিকে প্রথম সংখ্যা হিসাবে উত্পাদন করে। এটি আমার কয়েক সেকেন্ড সময় নেয়। আমি তিনটি হৃদয়কে তৃতীয় কার্ড হিসাবে তৈরি করে এমন সমস্ত ডেকে লিখি - আমার হাতে দ্বিতীয় কার্ড। এটি আবার মাত্র 2% ডেকে, তাই এখন আমরা 2 মিলিয়ন ডেকে নেমে এসেছি।

ধরুন আমার হাতে তৃতীয় কার্ডটি ক্লাবগুলির 7 টি। আমার কাছে 2 মিলিয়ন বীজের একটি ডাটাবেস রয়েছে যা আমার দুটি কার্ড ব্যবহার করে; আমি R টি ক্লাবকে তৃতীয় কার্ড হিসাবে উত্পাদন করে এমন 2 টি ডেক খুঁজে পাওয়ার জন্য আমি আরএনজি আরও 2 মিলিয়ন বার চালিয়েছি এবং আমরা মাত্র 40 হাজার ডেকে নেমেছি।

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

এখন আপনি দেখতে পাচ্ছেন কেন সত্য এলোমেলো গুরুত্বপূর্ণ? আপনি যেভাবে এটি বর্ণনা করেছেন, আপনি ভাবেন যে বিতরণ গুরুত্বপূর্ণ, তবে বিতরণ এমন নয় যা কোনও প্রক্রিয়া এলোমেলো করে তোলে। অনুমানযোগ্যতা হ'ল প্রক্রিয়াটি এলোমেলো করে তোলে।

হালনাগাদ

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

শব্দের বিতরণ শব্দটির চারপাশে কোনও বিভ্রান্তি রয়েছে বলে মনে হয় তাই আমি ব্যবহারগুলি সাবধানতার সাথে ডাকতে চাই।

হাতের প্রশ্নগুলি হ'ল:

  • সিউডোর্যান্ডম সংখ্যা এবং সত্যই এলোমেলো সংখ্যার পার্থক্য কীভাবে?
  • কেন পার্থক্য গুরুত্বপূর্ণ?
  • পার্থক্যগুলির কি পিআরএনজির আউটপুট বিতরণের সাথে কিছু যুক্ত রয়েছে?

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

আসুন ধরে নেওয়া শুরু করুন যে আমাদের কাছে একটি ম্যাজিক বক্স লেবেলযুক্ত রয়েছে TRNG। এর ইনপুট হিসাবে আমরা এটির চেয়ে বড় বা তার সমান একটি পূর্ণসংখ্যা n দেব এবং এর আউটপুট হিসাবে এটি আমাদেরকে এক এবং এন এর মধ্যে সত্যিকারের এলোমেলো সংখ্যা দেয় lusive বাক্সের আউটপুট সম্পূর্ণ অপ্রত্যাশিত (যখন একটিকে বাদ দিয়ে অন্য কোনও সংখ্যা দেওয়া হয়) এবং এক এবং এন এর মধ্যে যে কোনও সংখ্যা অন্য হিসাবে সম্ভাব্য; অর্থাৎ যে বন্টন হয় অভিন্ন । (এলোমেলোতার আরও আরও উন্নত পরিসংখ্যানের চেক রয়েছে যা আমরা সম্পাদন করতে পারতাম; আমি এই বিষয়টিকে আমার তর্কের কাছে জার্মানি না বলে এড়িয়ে চলেছি। অনুমান করে টিআরএনজি পরিসংখ্যানগতভাবে এলোমেলো।)

আমরা কার্ডগুলির একটি অসমাপ্ত ডেক দিয়ে শুরু করি। আমরা বাক্সটি এক থেকে 52 এর মধ্যে একটি সংখ্যার জন্য জিজ্ঞাসা করি - এটি TRNG(52)। এটি যে কোনও নম্বরই ফিরিয়ে দেয়, আমরা আমাদের সাজানো ডেক থেকে প্রচুর কার্ড গণনা করি এবং সেই কার্ডটি সরিয়ে ফেলি। এলোমেলো ডেকের মধ্যে এটি প্রথম কার্ডে পরিণত হয়। তারপরে আমরা TRNG(51)দ্বিতীয় কার্ডটি নির্বাচন করতে অনুরোধ করি এবং তাই করি।

এটি দেখার অন্য একটি উপায় হ'ল 52 টি আছে! = 52 x 51 x 50 ... x 2 x 1 সম্ভাব্য ডেক, যা প্রায় 2 226 । আমরা এগুলির মধ্যে একটি সত্যই এলোমেলোভাবে বেছে নিয়েছি।

এখন আমরা কার্ড লেনদেন। আমি যখন আমার কার্ডগুলি দেখি তখন আপনার কাছে কী কার্ড রয়েছে তা আমার কোনও ধারণা নেই । (আপনার কাছে আমার কাছে থাকা কার্ডগুলির কোনও নেই বলে সুস্পষ্ট বিষয়টি বাদ দিয়ে)) এগুলি সমান সম্ভাবনা সহ কোনও কার্ড হতে পারে।

সুতরাং আমাকে নিশ্চিত করে তুলুন যে আমি এটি পরিষ্কারভাবে ব্যাখ্যা করেছি। আমাদের প্রতিটি স্বতন্ত্র আউটপুটের অভিন্ন বিতরণ রয়েছে TRNG(n); প্রত্যেকে সম্ভাব্যতা 1 / n এর সাথে 1 এবং n এর মধ্যে একটি সংখ্যা বাছাই করে। এছাড়াও, এই প্রক্রিয়াটির ফলাফল আমরা 52 টির মধ্যে একটি বেছে নিয়েছি! 1/52 একটি সম্ভাব্যতা !, তাই ডিস্ট্রিবিউশনের সাথে সম্ভব ডেকে সম্ভব ডেকে সেট উপর হয় এছাড়াও অভিন্ন।

ঠিক আছে.

এখন ধরা যাক যে আমাদের কাছে লেবেলযুক্ত কম ম্যাজিক বক্স রয়েছে PRNG। আপনি এটি ব্যবহার করার আগে, এটি অবশ্যই 32-বিট স্বাক্ষরযুক্ত নম্বর সহ সিড করা উচিত ।

পাশে: 32 কেন ? এটি কি একটি 64- বা 256- বা 10000-বিট নম্বর দিয়ে বীজ দেওয়া যায় না? অবশ্যই। তবে (1) বাস্তবে বেশিরভাগ অফ-দ্য শেল্ফ পিআরএনজিগুলি 32-বিট সংখ্যাযুক্ত এবং বীজ বানাতে যদি আপনার 10000 বিট র্যান্ডমনেস থাকে তবে আপনি কেন পিআরএনজি ব্যবহার করছেন? আপনার কাছে ইতিমধ্যে এলোমেলোতার 10000 বিটের উত্স রয়েছে!

যাইহোক, পিআরএনজি কীভাবে কাজ করে ফিরে আসুন: এটি বীজ হওয়ার পরে, আপনি এটি যেভাবে ব্যবহার করেন সেভাবে ব্যবহার করতে পারেন TRNG। এটি হ'ল, আপনি এটিকে একটি নম্বর, এন দিয়ে গেছেন এবং এটি আপনাকে 1 এবং n এর মধ্যে একটি সংখ্যা প্রদান করবে lusive তদুপরি, output আউটপুটটির বিতরণ কমবেশি অভিন্ন । অর্থাত্, যখন আমরা PRNG1 এবং 6 এর মধ্যে একটি সংখ্যার জন্য জিজ্ঞাসা করি, তখন আমরা প্রতি 1 টি 2, 3, 4, 5 বা 6 পেয়েছি প্রায় এক ছয় ভাগ সময়, বীজ কী ছিল তা নির্বিশেষে।

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

এই প্রক্রিয়াটিকে ছদ্ম-এলোমেলো বলা হয় কারণ বাক্সটির আচরণটি আসলে সম্পূর্ণরূপে নির্বিচারক ; এটি 2 এক থেকে বেছে 32 সম্ভব বীজ উপর ভিত্তি করে আচরণে। এটি, একবার এটি বীজ হওয়ার পরে, অভিন্ন বন্টনের সাথে সংখ্যার ক্রমPRNG(6), PRNG(6), PRNG(6), ... তৈরি করে , তবে সেই ক্রমটি পুরোপুরি বীজ দ্বারা নির্ধারিত হয়। কলের একটি প্রদত্ত ক্রম জন্য, বলছি, PRNG (52), PRNG (51) ... এবং ইত্যাদি, সেখানে মাত্র 2 হয় 32 সম্ভব সিকোয়েন্স। বীজটি মূলত আমাদের মধ্যে কোনটি চয়ন করে।

ডেক জেনারেট করার জন্য সার্ভার এখন একটি বীজ উত্পন্ন করে। (কিভাবে? আমরা ফিরে যে বিন্দু থেকে আসবো।) তারপর তারা কল PRNG(52), PRNG(51)ইত্যাদি ডেক, আগে অনুরূপ তৈরি করতে।

আমি বর্ণিত আক্রমণটির জন্য এই সিস্টেমটি সংবেদনশীল। সার্ভারকে আক্রমণ করার জন্য আমরা প্রথমে আগে 0 দিয়ে বাক্সটির নিজস্ব কপি বীজ করে জিজ্ঞাসা করি PRNG(52)এবং এটি লিখে রাখি । তারপরে আমরা 1 দিয়ে পুনরায় বীজ PRNG(52)বর্ষণ করি , জিজ্ঞাসা করি এবং 2 32 -1 অবধি সমস্ত লিখে রাখি ।

এখন, পোকার সার্ভার যা ডেকে উত্পন্ন করতে PRNG ব্যবহার করছে তা কোনওভাবে বীজ উত্পন্ন করতে হবে। তারা কীভাবে তা করে তা বিবেচ্য নয়। তারা TRNG(2^32)সত্যই এলোমেলো বীজ পেতে কল করতে পারে । অথবা তারা বীজ হিসাবে বর্তমান সময় নিতে পারে, যা মোটেও এলোমেলো নয়; আমি জানি আপনার সময় যতটা সময় হয়। আমার আক্রমণের বিষয়টি হ'ল এটি কিছু যায় আসে না, কারণ আমার কাছে আমার ডাটাবেস রয়েছে । আমি যখন আমার প্রথম কার্ডটি দেখি তখন সম্ভব 98% বীজ মুছতে পারি। আমি যখন আমার দ্বিতীয় কার্ডটি দেখি তখন আমি আরও 98% আরও মুছে ফেলতে পারি, এবং আরও অবশেষে অবধি আমি মুষ্টিমেয় সম্ভাব্য বীজের কাছে নামতে পারি এবং আপনার হাতে কী আছে তা উচ্চ সম্ভাবনা দিয়ে জেনে নিতে পারি।

এখন, আমি আবার জোর দিয়ে বলতে চাই যে এখানে অনুমানটি হ'ল আমরা যদি PRNG(6)এক মিলিয়ন বার ফোন করি তবে আমরা প্রতিটি সংখ্যা প্রায় এক ছয় ভাগের সময় পেয়ে যাব । এই বিতরণটি (আরও বা কম) অভিন্ন , এবং যদি সেই বিতরণের অভিন্নতা আপনার পক্ষে যত্ন নেওয়া হয় তবে তা ঠিক। প্রশ্নটি হ'ল বিন্দুটি কি এমন অন্যান্য বিষয় রয়েছে PRNG(6)যা আমরা বিতরণ করি? এবং উত্তর হ্যাঁ । আমরা অনির্দেশ্যতা সম্পর্কেও যত্নশীল ।

সমস্যাটি দেখার আরেকটি উপায় হ'ল যদিও মিলিয়ন কল বিতরণ ভাল PRNG(6)হতে পারে, কারণ পিআরএনজি কেবল 2 32 সম্ভাব্য আচরণ থেকে বেছে নিচ্ছে , এটি প্রতিটি সম্ভাব্য ডেক তৈরি করতে পারে না। এটা শুধুমাত্র 2 তৈরি করতে পারেন 32 2 226 সম্ভব ডেকে; একটি ক্ষুদ্র ভগ্নাংশ সুতরাং সব ডেকের সেট উপর বিতরণ খুব খারাপ। তবে আবার, এখানে মৌলিক আক্রমণটি এর আউটপুটটির একটি ছোট নমুনা থেকে আমাদের অতীত এবং ভবিষ্যতের আচরণের সফলভাবে পূর্বাভাস দিতে সক্ষম হওয়ার উপর ভিত্তি করে PRNG

এটি ডুবে গেছে তা নিশ্চিত করার জন্য আমি এটি তৃতীয় বা চারবার বলি There এখানে তিনটি বিতরণ রয়েছে। প্রথমত, প্রক্রিয়াটির বিতরণ যা এলোমেলো 32-বিট বীজ উত্পাদন করে। যে পুরোপুরি, র্যান্ডম অনির্দেশ্য এবং অভিন্ন হতে পারে এবং হামলা এখনও কাজ করবে । দ্বিতীয়ত, এক মিলিয়ন কল বিতরণ PRNG(6)। এটি পুরোপুরি অভিন্ন হতে পারে এবং আক্রমণটি এখনও কার্যকর হবে। তৃতীয়ত, সিউডো-এলোমেলো প্রক্রিয়া দ্বারা বর্ণিত ডেকগুলির বিতরণ আমি বর্ণনা করেছি। যে বিতরণ চূড়ান্ত; কেবলমাত্র আইআরএল সম্ভাব্য ডেকগুলির একটি ক্ষুদ্র ভগ্নাংশই বেছে নেওয়া যেতে পারে। আক্রমণটি আউটপুট সম্পর্কে আংশিক জ্ঞানের ভিত্তিতে PRNG এর আচরণের পূর্বাভাসের উপর নির্ভর করে ।

ASIDE: এই আক্রমণটির প্রয়োজন যে আক্রমণকারীটি PRNG দ্বারা ব্যবহৃত সঠিক অ্যালগরিদমটি কী তা জানতে বা অনুমান করতে সক্ষম হয়। তা বাস্তববাদী কিনা তা একটি উন্মুক্ত প্রশ্ন। তবে, কোনও সুরক্ষা সিস্টেম ডিজাইনের সময় আপনার আক্রমণকারীদের প্রোগ্রামের সমস্ত অ্যালগোরিদম জেনে থাকলেও আক্রমণগুলির বিরুদ্ধে সুরক্ষিত থাকতে আপনাকে অবশ্যই এটি নকশা করতে হবে । অন্য একটি উপায় রাখুন: সিস্টেমটি সুরক্ষিত হওয়ার জন্য কোনও সুরক্ষা ব্যবস্থার যে অংশটি অবশ্যই গোপন রাখতে হবে তাকে "কী" বলা হয়। আপনার গোপনীয়তা হিসাবে যে অ্যালগরিদম আপনি ব্যবহার করছেন তার সুরক্ষার জন্য যদি আপনার সিস্টেম নির্ভর করে তবে আপনার কীতে সেই অ্যালগোরিদম রয়েছে । এটি একটি অত্যন্ত দুর্বল অবস্থান হতে!

সরানো.

এখন ধরা যাক আমাদের একটি তৃতীয় ম্যাজিক বক্স লেবেলযুক্ত রয়েছে CPRNG। এটি একটি ক্রিপ্টো শক্তি সংস্করণ PRNG। এটি 32-বিট বীজের পরিবর্তে 256-বিট বীজ লাগে। এটি PRNGসেই সম্পত্তির সাথে ভাগ করে নেয় যা বীজ 2 256 সম্ভাব্য আচরণগুলির মধ্যে একটি থেকে পছন্দ করে। এবং আমাদের অন্যান্য মেশিনগুলির মতো এরও সম্পত্তি রয়েছে যে CPRNG(n)1 এবং n এর মধ্যে ফলাফলের অভিন্ন বন্টন তৈরি করতে প্রচুর সংখ্যক কল রয়েছে : প্রতিটি সময় 1 / n হয়। আমরা কি এর বিরুদ্ধে আমাদের আক্রমণ চালাতে পারি?

আমাদের আসল আক্রমণটির জন্য আমাদের বীজ থেকে শুরু করে 32 টি ম্যাপিং সংরক্ষণ করতে হবে PRNG(52)। তবে 2 256 অনেক বড় সংখ্যা; এটি CPRNG(52)বহুবার চালানো এবং ফলাফলগুলি সংরক্ষণ করা সম্পূর্ণরূপে অপারগ ।

তবে ধরুন , বীজ সম্পর্কে একটি সত্যকে মূল্যবান করে তোলার অন্য কোনও উপায় আছে CPRNG(52)? আমরা এখন পর্যন্ত বেশ বোবা হয়েছি, সমস্ত সম্ভাব্য সংমিশ্রণকে কেবল জোর করে-জোর করে। আমরা কী যাদু বাক্সের ভিতরে নজর রাখতে পারি, কীভাবে এটি কাজ করে তা নির্ধারণ করতে এবং আউটপুটের ভিত্তিতে বীজ সম্পর্কে তথ্যগুলি অনুমান করতে পারি?

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

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

256-বিট সংখ্যাটি সমানভাবে বিতরণ করা হয়েছে - তা নিশ্চিত করার জন্য সার্ভারের কাজ করা উচিত - অর্থাৎ, প্রতিটি সম্ভাব্য বীজ 1/2 256 এর সম্ভাব্যতার সাথে বেছে নেওয়া হয় । মূলত সার্ভারের TRNG(2^256)-1জন্য বীজ উত্পন্ন করতে কল করা উচিত CPRNG

আমি যদি সার্ভারটি হ্যাক করতে পারি এবং এটিতে বীজ চয়ন করা হয়েছে তা দেখতে পীর করতে পারি? সেক্ষেত্রে আক্রমণকারী সিপিআরএনজির সম্পূর্ণ অতীত এবং ভবিষ্যত জানে । সার্ভারের লেখককে এই আক্রমণ থেকে রক্ষা করা দরকার! (অবশ্যই যদি আমি এই আক্রমণটিকে সফলভাবে মাউন্ট করতে পারি তবে আমি সম্ভবত সরাসরি আমার ব্যাংক অ্যাকাউন্টে অর্থটি সরাসরি ট্রান্সফার করতে পারি, সুতরাং এটি তেমন আকর্ষণীয় নয় Point সত্যই এলোমেলোভাবে 256-বিট সংখ্যাটি অনুমান করা খুব সুন্দর arn

প্রতিরক্ষা-গভীরতা সম্পর্কে আমার আগের বিষয়টিতে ফিরতে: 256-বিট বীজ এই সুরক্ষা ব্যবস্থার মূল চাবিকাঠি । সিপিআরএনজির ধারণা হ'ল কী সুরক্ষিত থাকবে ততক্ষণ সিস্টেমটি সুরক্ষিত থাকবে ; এমনকি যদি অ্যালগরিদম সম্পর্কে অন্যান্য প্রতিটি তথ্য জানা থাকে তবে যতক্ষণ আপনি কীটি গোপন রাখতে পারবেন ততক্ষণ প্রতিপক্ষের কার্ডগুলি অনাকাঙ্ক্ষিত।

ঠিক আছে, সুতরাং বীজটি গোপন এবং সমানভাবে বিতরণ করা উচিত কারণ এটি যদি না হয় তবে আমরা আক্রমণটি মাউন্ট করতে পারি। আমাদের অনুমান দ্বারা আউটপুট বিতরণ CPRNG(n)অভিন্ন। সমস্ত সম্ভাব্য ডেকের সেট উপর বিতরণ সম্পর্কে কি?

আপনি বলতে পারেন: সিপিআরএনজি দ্বারা 2 টি 256 সম্ভাব্য সিকোয়েন্স আউটপুট রয়েছে তবে কেবলমাত্র 226 টি সম্ভাব্য ডেক রয়েছে। সুতরাং ডেকের চেয়ে আরও সম্ভাব্য ক্রম রয়েছে, তাই আমরা ভাল; প্রতিটি সিস্টেমে-আইআরএল ডেক এখন এই সিস্টেমে সম্ভব (উচ্চ সম্ভাবনার সাথে)। এবং এটি ছাড়া একটি ভাল যুক্তি ...

2 226 কেবল 52 এর কাছাকাছি is এটি ভাগ করুন। 2 256/52 ! সম্ভবত পুরো সংখ্যা হতে পারে না কারণ একটি জিনিসের জন্য, 52! 3 দ্বারা বিভাজ্য কিন্তু দুটি শক্তি হয় না! যেহেতু এটি পুরো সংখ্যা নয় এখন আমাদের পরিস্থিতি রয়েছে যেখানে সমস্ত ডেকগুলি সম্ভব , তবে কিছু ডেকে অন্যের চেয়ে বেশি সম্ভাবনা রয়েছে

যদি এটি পরিষ্কার হয় না, তবে ছোট সংখ্যার সাথে পরিস্থিতি বিবেচনা করুন। ধরুন আমাদের কাছে তিনটি কার্ড রয়েছে, এ, বি এবং সি। ধরুন আমরা একটি পিআরএনজি ব্যবহার করেছি--বিট বীজ সহ, তাই সম্ভাব্য বীজ রয়েছে। PRNG(3)বীজের উপর নির্ভর করে 256 টি সম্ভাব্য আউটপুট রয়েছে ; তাদের এক তৃতীয়াংশ এ হওয়ার কোনও উপায় নেই, তাদের এক তৃতীয়াংশ বি এবং তাদের এক তৃতীয়াংশ সি হবে কারণ 256 টি 3 দ্বারা সমানভাবে বিভাজ্য নয় them তাদের মধ্যে একটির দিকে একটি ছোট পক্ষপাত থাকতে হবে।

একইভাবে, 52 টি সমানভাবে 2 256 তে বিভক্ত হয় না , তাই প্রথম কার্ডটি বেছে নেওয়া এবং অন্যদের থেকে দূরে একটি পক্ষপাতিত্ব হিসাবে কিছু কার্ডের প্রতি কিছু পক্ষপাত থাকতে হবে।

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

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

ঠিক আছে, সুতরাং এর যোগফল দেওয়া যাক।

সিউডোর্যান্ডম সংখ্যা এবং সত্যই এলোমেলো সংখ্যার পার্থক্য কীভাবে?

তারা যে পরিমাণ পূর্বাভাসের প্রদর্শন করে তা তাদের মধ্যে পৃথক।

  • সত্যই এলোমেলো সংখ্যা অনুমানযোগ্য নয়।
  • সমস্ত সিউডো-এলোমেলো সংখ্যা অনুমানযোগ্য যদি বীজ নির্ধারণ বা অনুমান করা যায় or

কেন পার্থক্য গুরুত্বপূর্ণ?

কারণ এমন অ্যাপ্লিকেশন রয়েছে যেখানে সিস্টেমটির সুরক্ষা অনির্দেশ্যতার উপর নির্ভর করে ।

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

পার্থক্যটির কি পিআরএনজির আউটপুট বিতরণের সাথে কিছু যুক্ত রয়েছে?

বিতরণ বা জন্য উহার অভাব একরূপতা পৃথক কল করার RNG(n)আক্রমণের আমি বর্ণনা করেছি প্রাসঙ্গিক নয়।

যেমনটি আমরা দেখেছি, উভয়ই PRNGএবং CPRNGসম্ভাব্য সকল ডেকের পৃথক ডেক বেছে নেওয়ার সম্ভাবনার দুর্বল বিতরণ করে। PRNGযথেষ্ট খারাপ, তবে দুটো একসাথে সমস্যা আছে।

আরেকটি প্রশ্ন:

টিআরএনজি যদি সিপিআরএনজির চেয়ে আরও ভাল হয়, যা পিআরএনজির চেয়ে আরও ভাল হয় তবে কেন কেউ সিপিআরএনজি বা পিআরএনজি ব্যবহার করে?

দুটি কারণ।

প্রথম: ব্যয়। টিআরএনজি ব্যয়বহুল । সত্যিকারের এলোমেলো সংখ্যা তৈরি করা কঠিন। সিপিআরএনজিগুলি বীজের জন্য টিআরএনজি-তে কেবল একটি কল সহ নির্বিচারে অনেক কলের জন্য ভাল ফলাফল দেয়। নীচের দিকটি অবশ্যই আপনাকে সেই বীজটিকে একটি গোপন রাখতে হবে

দ্বিতীয়: কখনও কখনও আমরা অনুমানযোগ্যতা চাই এবং আমাদের যত্ন নেওয়া সমস্ত হ'ল ভাল বিতরণ। আপনি যদি পরীক্ষার স্যুটটির প্রোগ্রাম ইনপুট হিসাবে "এলোমেলো" ডেটা তৈরি করে থাকেন এবং এটি একটি ত্রুটি দেখায়, তবে চমৎকার হবে যে পরীক্ষার স্যুটটি চালিয়ে আবারও বাগটি তৈরি করা যায়!

আমি আশা করি এটি এখন আরও স্পষ্ট।

অবশেষে, আপনি যদি এটি উপভোগ করেন তবে আপনি এলোমেলোতা এবং আদেশের বিষয় সম্পর্কে আরও কিছু পড়া উপভোগ করতে পারেন:


20
ঠিক আছে, ছেলে মেয়েরা। আপাতত যথেষ্ট মন্তব্য করা। আপনি যদি আরও এই নিয়ে আলোচনা করতে চান তবে নিজের জন্য একটি চ্যাটরুমটি ধরুন, kthnxbye!
আইভো ফ্লিপস

1
@ এরিক কিন্তু প্রতিটি নতুন ডেকে আঁকার আগে বীজ পুনরায় সেট করা হয় না, তাই না? সুতরাং আপনি যখন সঠিক বলেছেন যে কেবলমাত্র তুলনামূলকভাবে কয়েকটি ট্র্যাজেক্টোরি রয়েছে যা থেকে আমরা নমুনা নিচ্ছি, আপনি ঠিক জানেন না আপনি এই মুহুর্তে যে ট্রাজেক্টোরিতে রয়েছেন এবং ট্র্যাজেক্টরিগুলি ছেদ করেছেন।
এএস


সম্পর্কিত সমস্যাগুলির একটি ভাল (তবে ঘন) চিকিত্সা নুথের টিএওসিপি খণ্ড ২, বিভাগ 3.5 "র্যান্ডম সিকোয়েন্স কি?" (পৃষ্ঠা 149) এ, সমাপ্তি, কে-ডিস্ট্রিবিউটেড এবং ∞-ডিস্ট্রিবিউটেড সিকোয়েন্সগুলির আলোকিত সংজ্ঞা দিয়ে শুরু করে। সিউডোরান্ডম ক্রমগুলি 3.5.F (p। 170) এ আলোচনা করা হয়েছে। জটিলতা তত্ত্ব এবং জার্মান বিএসআই থেকে সিউডোর্যান্ডমনেসের মানদণ্ডটিও দেখুন ।
শ্রীভাতসারআর

160

যেমন এরিক লিপার্ট বলেছেন, এটি কেবল বিতরণ নয়। এলোমেলোতা পরিমাপ করার অন্যান্য উপায় রয়েছে।

প্রাথমিক র্যান্ডম সংখ্যার জেনারেটরগুলির মধ্যে একটির ন্যূনতম তাৎপর্যপূর্ণ বিটের একটি ক্রম রয়েছে - এটি 0 এবং 1 এর বিকল্প হয়েছে। সুতরাং এলএসবি 100% অনুমানযোগ্য ছিল। তবে আপনাকে এর চেয়ে বেশি চিন্তা করতে হবে। প্রতিটি বিট অপ্রত্যাশিত হতে হবে।

সমস্যাটি সম্পর্কে চিন্তা করার জন্য এখানে একটি ভাল উপায়। ধরা যাক আপনি এলোমেলোভাবে 64 বিট তৈরি করছেন। প্রতিটি ফলাফলের জন্য, প্রথম 32 বিট (এ), এবং সর্বশেষ 32 বিট (বি) নিন এবং একটি সূচকে একটি অ্যারে x [এ, বি] তৈরি করুন। এখন পরীক্ষাটি এক মিলিয়ন বার করুন এবং প্রতিটি ফলাফলের জন্য সেই সংখ্যায় অ্যারে বৃদ্ধি করুন, অর্থাৎ এক্স [এ, বি] ++;

এখন একটি 2 ডি ডায়াগ্রাম আঁকুন, যেখানে সংখ্যাটি বৃহত্তর, সেই জায়গাতে পিক্সেলটি আরও উজ্জ্বল হবে।

যদি এটি সত্যই এলোমেলো হয় তবে রঙটি এক ধরণের ধূসর হতে হবে। তবে আপনি নিদর্শন পেতে পারেন। উদাহরণস্বরূপ, উইন্ডোজ এনটি সিস্টেমের টিসিপি সিকোয়েন্স নম্বরটিতে "র্যান্ডমনেস" এর এই চিত্রটি নিন:

উইন্ডোজ এনটি

এমনকি উইন্ডোজ 98 থেকে এটি এক:

উইন্ডোজ 98

এবং এখানে সিসকো রাউটার (আইওএস) বাস্তবায়নের এলোমেলোতা রয়েছে। সিসকো আইএসও

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


30
এটি এত উজ্জ্বল এটি আমার চোখে জল এনে দেয়। এমন একটি অ্যাপ্লিকেশন থাকা উচিত যা প্রতিটি ওএস (মোবাইল / ডেস্কটপ / সার্ভার) এবং প্ল্যাটফর্মের জন্য (জেভিএম / জাভাস্ক্রিপ্ট / ইত্যাদি) তৈরি করে।
এইচডিভি

5
উইন্ডোজ র‌্যান্ড () ফাংশনটি বেশ ভাল! এটি এমন মেঘ উত্পাদন করে যা কোনও আপাত নিদর্শন রাখে না। এটি প্রয়োগ করার জন্য (এবং অন্যান্য অ্যালগোরিদমগুলি) আমার বাস্তবায়ন দেখুন: github.com/Zalastax/visualize_random
জালাস্টাক্স

93

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

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

আরএনজি আক্রমণ সম্পর্কে আরও তথ্য এই উইকিপিডিয়া নিবন্ধে পাওয়া যাবে ।


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

আমি মনে করি এটির ব্যাখ্যা করার সবচেয়ে সহজ উপায়টি এলোমেলোভাবে সংখ্যার জেনারেটর অ্যালগরিদমগুলি প্রোগ্রাম করতে হবে। তার মানে সেখানে অনুসরণ করা নির্দেশাবলীর সেট রয়েছে। যদি নির্দেশের সেট থাকে তবে তা এলোমেলো হতে পারে না।
Keltari

6
@Keltari তুমি ... সর্বাধিক RNGs (অন্তত ক্রিপ্টোগ্রাফিক বেশী) বাইরের উৎস থেকে ইনপুট (যেমন মাউস সঞ্চালন) জড়ো করা এবং ব্যবহার করে শুরুর শর্ত অংশ হিসেবে এনট্রপি উপাদান দিতে ভুলে গেছেন - এভাবে থেকে রূপান্তর Aকরতে Bপ্রোগ্রাম হয় কিন্তু A(হওয়া উচিত) এর প্রাথমিক অবস্থাটি অস্পষ্ট হতে পারে। লিনাক্স /dev/randomকতটা এনট্রপি পাওয়া যায় তার একটি আনুমানিক ধারণা রাখে এবং খুব কম হলে নাম্বার দেওয়া বন্ধ করে দেয়।
বেসিক

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

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

76

আমি পাইথনে চেষ্টা করেছি: এখানে 60 মিলিয়ন রোলসের ফলাফল। সর্বোচ্চ প্রকরণটি 0.15 এর মতো। এটি পেতে হিসাবে এটি কি এলোমেলো না?

প্রকৃতপক্ষে, এটি এত "ভাল" এটি খারাপ ... প্রাথমিক মানগুলির একটি ছোট ক্রম দেওয়া সমস্ত বিদ্যমান উত্তর অনুমানযোগ্যতার উপর ফোকাস করে । আমি আরেকটি বিষয় উত্থাপন করতে চাই:

    এলোমেলো রোলগুলির তুলনায় আপনার বিতরণে অনেক ছোট স্ট্যান্ডার্ড বিচ্যুতি রয়েছে

সত্য যদৃচ্ছতা মাত্র বেশ আসে যে গড় যে আপনার মানের একটি ইঙ্গিত হিসেবে ব্যবহার করছেন "প্রায় হুবহু 1 কিভাবে কি কখনো অনেক নম্বর তা থেকে নির্বাচন করতে পারবেন ওভার" পাসে।

আপনি যদি একাধিক ডাইস রোলগুলির জন্য সম্ভাব্যতা বিতরণ সম্পর্কে এই স্ট্যাক এক্সচেঞ্জের প্রশ্নটি দেখে থাকেন তবে আপনি এন ডাইস রোলগুলির মানিক বিচ্যুতির একটি সূত্র দেখতে পাবেন (সত্যিকারের এলোমেলো ফলাফল গ্রহণ করে):

 sqrt(N * 35.0 / 12.0).

সেই সূত্রটি ব্যবহার করে, এর জন্য মানক বিচ্যুতি :

  • 1 মিলিয়ন রোল 1708
  • 60 মিলিয়ন রোল 13229

আমরা যদি আপনার ফলাফলগুলি দেখি:

  • 1 মিলিয়ন রোলস: এসডিডিদেব (1000066, 999666, 1001523, 999452, 999294, 999999) 804
  • 60 মিলিয়ন রোলস: স্টডিডেভ (9997653, 9997789, 9996853, 10006533, 10002774, 9998398) 3827

সূত্রের সাথে হুবহু মিলে যাওয়ার জন্য আপনি সীমাবদ্ধ নমুনার মানক বিচ্যুতি আশা করতে পারেন না তবে এটি বেশ কাছাকাছি আসা উচিত। তবুও, 1 মিলিয়ন রোলগুলিতে আপনি অর্ধেকেরও কম উপযুক্ত এসডিডিভের চেয়ে কম, এবং million০ মিলিয়ন দ্বারা আপনি এক তৃতীয়াংশের অধীনে - এটি আরও খারাপ হচ্ছে, এবং এটি কোনও কাকতালীয় ঘটনা নয় ....

সিউডো-আরএনজিগুলি বীজ দিয়ে শুরু করে নির্দিষ্ট সময়ের জন্য মূল সংখ্যাটি পুনর্বিবেচনা না করে পৃথক পৃথক সংখ্যার অনুক্রমের মধ্য দিয়ে যেতে থাকে। উদাহরণস্বরূপ, পুরানো সি লাইব্রেরি rand()ফাংশনটির বাস্তবায়নের সাধারণত 2 of 32 পিরিয়ড থাকে এবং তারা বীজ পুনরাবৃত্তি করার আগে একবার 0 এবং 2 ^ 32-1 এর মধ্যে প্রতিটি সংখ্যা দেখতে পাবেন। সুতরাং, যদি আপনি সিমুলেটেড 2 ^ 32 ডাইস প্রাক মডুলাস রোল করে (%) ফলাফলগুলিতে প্রতিটি সংখ্যা 0 থেকে 2 ^ 32 অবধি অন্তর্ভুক্ত থাকবে, প্রতিটি 1-6 ফলাফলের জন্য গণনাগুলি 715827883 বা 715827882 (2 ^ 32 6 এর একাধিক নয়) হবে এবং মান বিচ্যুতি তাই কেবলমাত্র তুচ্ছ 0 এর উপরে ব্যবহার করে উপরের সূত্রটিতে, 2 ^ 32 রোলগুলির জন্য সঠিক মান বিচ্যুতি 111924 Any যাইহোক, আপনার সিউডো-এলোমেলো রোলগুলির সংখ্যা বাড়িয়ে আপনাকে 0 স্ট্যান্ডার্ড বিচ্যুতির দিকে রূপান্তরিত করে। রোলগুলির সংখ্যাটি সময়ের একটি উল্লেখযোগ্য অংশ হলে সমস্যাটি তাত্পর্যপূর্ণ হতে পারে বলে আশা করা যায়, তবে কিছু ছদ্ম-আরএনজি অন্যদের তুলনায় আরও খারাপ সমস্যা - বা এমনকি কম নমুনা নিয়েও সমস্যা দেখা দিতে পারে।

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


একটি দৃ concrete় উদাহরণ দেওয়ার জন্য: বলুন একজন গণিতবিদ একজন জুজু মেশিন প্রোগ্রামারকে বলছেন যে million০ মিলিয়ন সিমুলেটেড রোলগুলির পরে - যদি স্ক্রিনের চারপাশে কয়েকশ "সামান্য" লাইট "জ্বলজ্বল করা হত, যদি সেখানে 10,013,229 বা আরও বেশি ছক্কর পড়ে থাকে, যা গণিতবিদ আশা করেন গড় থেকে 1 স্ট্যাডেভ দূরে, একটি ছোট পরিশোধ করা উচিত। প্রতি 68-95-99.7 নিয়ম (উইকিপিডিয়া) এই সম্পর্কে ঘটা উচিত 16% সময় (ক স্ট্যানডার্ড ডেভিয়েশন মধ্যে ~ 68% পতনের / কেবলমাত্র অর্ধেক বাহিরে উপরে আছে)। আপনার এলোমেলো নম্বর জেনারেটরের সাথে, এটি গড় থেকে প্রায় 3.5 স্ট্যান্ডার্ড বিচ্যুতি থেকে: 0.025% সুযোগের অধীনে - প্রায় কোনও গ্রাহকই এই সুবিধা পান না। সুনির্দিষ্টভাবে উল্লিখিত পৃষ্ঠায় উচ্চ বিচ্যুতি টেবিলটি দেখুন:

| Range    | In range   | Outside range | Approx. freq. for daily event  |
| µ ± 1σ   | 0.68268... | 1 in 3        | Twice a week                   |
| µ ± 3.5σ | 0.99953... | 1 in 2149     | Every six years                |

আপনি এখানে আপেল এবং কমলা তুলনা করছেন। দুটি স্ট্যান্ডার্ড বিচ্যুতির একে অপরের সাথে একেবারে কিছুই করার নেই।
Jbeuh

50

আমি কেবল পাশা রোলগুলি তৈরি করতে এই এলোমেলো নম্বর জেনারেটরটি লিখেছি

def get_generator():
  next = 1
  def generator():
    next += 1
    if next > 6:
      next = 1
    return next
  return generator

আপনি এটি এইভাবে ব্যবহার করুন

>> generator = get_generator()
>> generator()
1
>> generator()
2
>> generator()
3
>> generator()
4
>> generator()
5
>> generator()
6
>> generator()
1

ইত্যাদি ইত্যাদি আপনি কী এমন একটি প্রোগ্রামের জন্য এই জেনারেটরটি ব্যবহার করতে পেরে খুশি হবেন যা একটি ডাইস গেমটি চালিয়েছিল? মনে রাখবেন, এর বিতরণ হ'ল আপনি "সত্যিকারের এলোমেলো" জেনারেটরের কাছ থেকে প্রত্যাশা করবেন!

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


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

3
পয়েন্ট ছাড়াও, আমি জানি, কিন্তু get_generator = lambda: itertools.cycle(range(1,7)), generator = get_generator(), next(generator) # and so onখুব মার্জিত উল্লেখ করতে নয় :)
জানুস Troelsen

2
@ ব্রায়ানস প্রকৃতপক্ষে, একটি পিআরএনজি যা সময়ের সাথে সাথে বিতরণ পরীক্ষায় ব্যর্থ হয়েছে সংজ্ঞা দ্বারা অনুমানযোগ্য হবে। সুতরাং কিছু বড় এন এর উপরে, যদি আপনি এন কয়েন থেকে এন / 2 হেড থেকে কিছুটা দূরে চলে যান তবে আপনি মাথার উপর বাজি শুরু করতে পারেন এবং আপনি হেরে যাওয়ার চেয়ে আরও বেশি জয় পেতে পারেন। তেমনিভাবে, যদি আপনি মাথা v। লেজগুলির নিখুঁত বন্টন পেয়ে থাকেন তবে মাথা সবসময় জোড়া হয়ে আসে, তবে আপনার আবার জয়ের রেসিপি থাকবে। বিতরণ পরীক্ষাগুলি হল আপনি কীভাবে জানেন যে কোনও পিআরএনজি কোনও ভাল।
জন কিপারস্কি

1
আপনি ভুলে গেছেন nonlocal next:-)।
কোস

5
আরও ভাল উদাহরণ: পাইকে স্বাভাবিক বলে মনে করা হয় , যার অর্থ যে কোনও বেসে প্রদত্ত দৈর্ঘ্যের অঙ্কগুলির যে কোনও অনুক্রম সেই ঘাঁটিতে সেই দৈর্ঘ্যের অন্য অনুক্রমের চেয়ে বেশি দেখা যায় না। একটি অ্যালগরিদম, যখন এন এলোমেলো বিটের জন্য জিজ্ঞাসা করা হয় , পাই এর পরবর্তী এন বিট নেয় এবং সেগুলি প্রদান করে ("বীজ" আপনার শুরু করা বিটটি), দীর্ঘমেয়াদে একটি পুরোপুরি এমনকি বিতরণও তৈরি করা উচিত। তবে আপনি এটি এখনও আপনার জেনারেটরের জন্য চাইবেন না - যে কেউ আপনার উত্পন্ন বিটের শেষ গুচ্ছটি জানে সে প্রথমবারের মতো সিক্যুয়েন্সটি ঘটতে পারে, ধরে নিতে পারে যে আপনার বীজ আছে এবং সম্ভবত সঠিক আছে।
cpast

26

আপনার কম্পিউটারটি যে র্যান্ডম সংখ্যা প্রজন্মটি সম্পাদন করতে পারে তা বেশিরভাগ প্রয়োজনের জন্য উপযুক্ত এবং আপনার এমন একটি সময় জুড়ে আসার সম্ভাবনা নেই যেখানে আপনার সত্যিকারের এলোমেলো নম্বর দরকার।

সত্য এলোমেলো সংখ্যা প্রজন্মের যদিও এর উদ্দেশ্য রয়েছে has কম্পিউটার সুরক্ষা, জুয়া, বড় পরিসংখ্যানের নমুনা ইত্যাদিতে

আপনি যদি এলোমেলো সংখ্যার প্রয়োগগুলিতে আগ্রহী হন তবে উইকিপিডিয়া নিবন্ধটি দেখুন


12
বড় সমস্যাটি হ'ল যখন আপনার এলোমেলো সংখ্যার প্রয়োজন হয় যা কোনও আক্রমণকারী নিরাপত্তার কারণে ভবিষ্যদ্বাণী করতে পারে না।
ডেভিড শোয়ার্জ

16
আপনি নিশ্চিত যে নরক হিসাবে এমন একটি সময় জুড়ে আসার সম্ভাবনা রয়েছে যেখানে আপনার সত্যিকারের এলোমেলো সংখ্যা দরকার। এটি দিয়ে শুরু হওয়া একটি ওয়েব পৃষ্ঠা খোলার পক্ষে যথেষ্ট https://...
জানু হুডেক

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

5
@ জানহুদেক আমি বিশেষভাবে এই অর্থে বলছিলাম যে আপনার একটি অনলাইন এলোমেলো নম্বর জেনারেটর ব্যবহার করতে হবে। সত্যিকারের এলোমেলো সংখ্যাগুলি প্রায়শই ব্যবহৃত হয়, তবে খুব কম লোককে এগুলি নিজেরাই তৈরি করতে হবে।
অ্যালেক্স ম্যাকেনজি

2
স্লট মেশিনগুলি টিআরএনজি নয়, একটি পিআরএনজি ব্যবহার করে। জেনারেটর সর্বদা চলতে থাকে এবং স্পিন বোতামটি ধাক্কা দেওয়া ঠিক সময়ে একটি সংখ্যা বাছাই করা হয়। পিআরএনজি এবং সত্যিকারের এলোমেলো বোতাম টিপানোর সময় একটি টিআরএনজির সমান।
রজার ডাহল

26

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

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

glibc random():
    r[i] ← ( r[i-3] + r[i-31] )  % (2^32)
    output  r[i] >> 1

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

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

( RC4( IV + Key ) ) XOR (message)

কীগুলি একে অপরের সাথে ঘনিষ্ঠভাবে সম্পর্কিত ছিল। এখানে, প্রতিটি পদক্ষেপে কেবল চতুর্থ 1 বৃদ্ধি পেয়েছে এবং অন্যান্য সমস্ত একই থাকে remained যেহেতু এটি নিখুঁতভাবে এলোমেলো ছিল না, এটি ধ্বংসাত্মক এবং সহজেই ভেঙে পড়েছিল। কীটি প্রায় 40000 ফ্রেম বিশ্লেষণ করে পুনরুদ্ধার করা যেতে পারে, যা কয়েক মিনিটের ব্যাপার। যদি ডব্লিউইপি খাঁটিভাবে র্যান্ডম 24-বিট চতুর্থ ব্যবহার করে, তবে এটি প্রায় 2 ^ 24 (প্রায় 16.8 মিলিয়ন) ফ্রেম পর্যন্ত নিরাপদ থাকতে পারে।

সুতরাং যখন কেউ সম্ভব হয় তখন সুরক্ষিত সংবেদনশীল বিষয়ে খাঁটি এলোমেলো নম্বর জেনারেটরের সাথে যাওয়া উচিত।


3
আমি দুর্বল সাইফার ব্যবহার করে খারাপভাবে ডিজাইন করা প্রোটোকলের উপর WEP স্টাফগুলিকে দোষ দেব। আধুনিক স্ট্রিম সাইফারগুলির সাহায্যে আপনি IV হিসাবে একটি কাউন্টার ব্যবহার করতে পারেন।
কোডসইনচাউস

2
ডাব্লুইইপি-র প্রধান সমস্যাটি 2 ^ 24 (প্রায় 16 মিলিয়ন) ফ্রেমে কীটি পুনরাবৃত্তি করেছিল। এটি সম্পর্কিত কীগুলির সাথে আরও খারাপ ছিল যার ফলে কোডটি প্রায় 40000 ফ্রেমে ক্র্যাক করা সম্ভব হয়েছিল। এখানে মূল বিষয়টি হ'ল কীটি এলোমেলো নয়। এটি নিবিড়ভাবে সম্পর্কিত, যাতে ক্র্যাক করা সহজ।
প্রভু

1
ক্রিপ্টোগ্রাফিক কী উত্পন্ন করার সময়ই ক্রিপ্টোগ্রাফিতে সিউডো-এলোমেলোতা খারাপ । এটি যে পুরোপুরি ঠিক আছে। প্রকৃতপক্ষে, আরসি 4 বার্তাটির প্লেইন টেক্সটটিতে কী জোরডের 128-বিট প্রসারণের সাথে সিডো-এলোমেলো সংখ্যা জেনারেটরের চেয়ে সামান্য কিছু।
ম্যাট

12

পার্থক্যটি হ'ল সিউডোর্যান্ডম উত্পন্ন সংখ্যাগুলি কিছু সময়ের পরে অনুমানযোগ্য (পুনরাবৃত্তি করা) যেখানে সত্য র্যান্ডম সংখ্যাগুলি হয় না। এটি যে দৈর্ঘ্যের পুনরাবৃত্তি করতে লাগে তা তার প্রজন্মের জন্য ব্যবহৃত বীজের দৈর্ঘ্যের উপর নির্ভর করে।

এখানে এই বিষয় সম্পর্কে একটি সুন্দর সুন্দর ভিডিও: http://www.youtube.com/watch?v=itaMNuWLzJo


অনুমানযোগ্যতা! = পুনরাবৃত্তি। মার্সেন টুইস্টার এর একটি ভাল উদাহরণ। 624 ইন্ট 32 এর পরে সর্বাধিক বাস্তবায়নের ক্ষেত্রে আপনি পরবর্তী সমস্ত সংখ্যার পূর্বাভাস দিতে পারেন, তবে মার্সেন টুইস্টার সিক্যুয়েন্স তার চেয়ে অনেক বেশি দীর্ঘ (2 ^ 19937 - 1)।
HoLyVieR

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

"সত্যিকারের এলোমেলো সংখ্যা [অনুমানযোগ্য]" নয়। আজকের জন্য এটি সত্য। এখন যদি আমরা বিগ ব্যাং তত্ত্বকে বিশ্বাস করি, এবং আমাদের বিবিয়ের পরে যে কোনও সময় মহাবিশ্বের অবস্থা গণনা করার প্রচুর ক্ষমতা আছে, তবে পদার্থবিজ্ঞানের উপর ভিত্তি করে ... আমরা ভবিষ্যতের ভবিষ্যদ্বাণী করতে সক্ষম হব, এই সত্য সহ আমি এই খুব সঠিক মন্তব্য লিখছি। রাইট?
মিনিট

এটি অনুমানগতভাবে সত্য, তবে, প্রকৃত সংস্থাগুলির প্রকৃত ক্রিয়াকলাপের সাথে জড়িত বিপুল পরিমাণ এন্ট্রপি বিবেচনা করে, প্রয়োজনীয় কম্পিউটিং শক্তি হাস্যকরভাবে বিশাল হবে। কম্পিউটারগুলিতে coveredাকা মহাদেশগুলি ভাবেন। পূর্ববর্তী রাজ্যের উপর নির্ভরশীলতার কারণে, মহাবিশ্বের প্রতিটি দেহের অবস্থা সময়ে প্রতিটি বিন্দুতে সংরক্ষণ করতে হবে, যা সংজ্ঞা অনুসারে মহাবিশ্বে যে পরিমাণ স্থান পাওয়া যায় তার চেয়ে বেশি স্থানের প্রয়োজন হবে, সম্পূর্ণরূপে
স্মৃতিযন্ত্রের

@ পরিবেশবিদ - আহা! "কম্পিউটারগুলিতে coveredাকা মহাদেশগুলি" ... এটি "দ্য হিচাইকারস গাইড অফ দ্য গ্যালাক্সি" কী নয়? ;-)
ysap

10

ধরে নিন যে একটি সিউডো এলোমেলো সংখ্যা তৈরি হওয়ার আগেই তার দ্বারা অনুমান করা যায়।

তুচ্ছ অ্যাপ্লিকেশনগুলির জন্য ছদ্ম এলোমেলোতা ঠিক আছে, যেমন আপনার উদাহরণ হিসাবে, আপনি কিছুটা ছোটখাটো প্রকরণের সাথে প্রায় সঠিক শতাংশ (মোট ফলাফলের সেটগুলির প্রায় 1/6 তম) পাবেন (যা আপনি দেখতে পাবেন যে আপনি যদি পাশের 600 কেস রোল করতে চান তবে বার);

যাইহোক, এটি কম্পিউটার সুরক্ষার মতো জিনিসগুলির ক্ষেত্রে আসে; সত্য এলোমেলো প্রয়োজন।

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

যদি কোনও আক্রমণকারী যদি জানতে পারে যে আপনার কম্পিউটারটি দুটি 'র্যান্ডম' নম্বরগুলি কী কী চয়ন করছে, তারা আপনার ব্যক্তিগত কী গণনা করতে একই পদক্ষেপগুলি করতে পারে (যেটি অন্য কেউ জানার কথা নয়!)

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

সেখানেই সত্যিকারের এলোমেলোতা (যেমন অনুমান / গণনা করা সম্ভব হচ্ছে না) প্রয়োজন।


10

আমি যে প্রথম এলোমেলো নাম্বারটি ব্যবহার করেছিলাম তার মধ্যে দুটি ধারাবাহিক র্যান্ডম সংখ্যার দুর্দান্ত সম্পত্তি ছিল, দ্বিতীয়টি 0.6 এর সম্ভাব্যতার সাথে বড় ছিল। ০.৫ নয়। এবং তৃতীয়টি সম্ভাবনা 0.6 সহ দ্বিতীয়টির চেয়ে বড় ছিল। আপনি কল্পনা করতে পারেন কীভাবে এটি সিমুলেশন দিয়ে সর্বনাশ করে।

কিছু লোক এলোমেলো সংখ্যার সমানভাবে বিতরণ করা সত্ত্বেও আমার পক্ষে এটি বিশ্বাসযোগ্য হবে না, তবে আপনি যদি ক্রমটি দেখুন (1, 3, 5, 2, 4, 1, 3, 5, 2, 4, ...) যেখানে দুটি সংখ্যার দ্বিতীয়টি সম্ভাবনা 0.6 দিয়ে বড়।

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


8

সংক্ষিপ্ত উত্তরটি হ'ল সাধারণত লোকেদের একটি খারাপ কারণে "সত্যিকারের এলোমেলোতা" প্রয়োজন হয়, যথা তারা ক্রিপ্টোগ্রাফির কোনও বোঝেন না।

স্ট্রিপ সিফার এবং সিএসপিআরএনজি- এর মতো ক্রিপ্টোগ্রাফিক আদিমগুলি যখন কিছু অবিশ্বাস্য বিট খাওয়ানো হয় তখন অবিশ্বাস্য বিটগুলির বিশাল স্ট্রিম উত্পাদন করতে ব্যবহৃত হয়।

সতর্ক পাঠক এখন বুঝতে পারবেন যে এখানে একটি বুটস্ট্র্যাপিংয়ের সমস্যা রয়েছে: এগুলি শুরু করার জন্য আমাদের অবশ্যই কয়েকটি বিট এনট্রপি সংগ্রহ করতে হবে। তারপরে তাদেরকে কোনও সিএসপিআরএনজি খাওয়ানো যেতে পারে যা সুখীভাবে আমাদের প্রয়োজন সমস্ত অনাকাঙ্ক্ষিত বিট সরবরাহ করবে। সুতরাং একটি সিএসপিআরএনজি বীজ করার জন্য একটি হার্ডওয়্যার আরএনজি প্রয়োজন । এটিই একমাত্র ক্ষেত্রে যেখানে সত্যে এনট্রপি দরকার।

(আমি মনে করি এটি সুরক্ষা বা ক্রিপ্টোগ্রাফি পোস্ট করা উচিত ছিল।)

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

সম্পাদনা: এখানকার কিছু লোকেরা হুমকির একটি মডেল ধরে নিয়েছে যাতে আক্রমণকারী কোনও সিএসপিআরএনজির অভ্যন্তরীণ অবস্থা পড়তে পারে এবং সেখান থেকে এই সিদ্ধান্তে পৌঁছে যে সিএসপিআরএনজি নিরাপদ সমাধান নয় solution এটি দরিদ্র থ্রেড মডেলিংয়ের একটি উদাহরণ। কোনও আক্রমণকারী যদি আপনার সিস্টেমের মালিক হন, খেলাটি শেষ, সরল এবং সাধারণ। আপনি এই মুহুর্তে টিআরএনজি বা সিএসপিআরএনজি ব্যবহার করেন কিনা তা কোনও ত্রুটি করে না।

সম্পাদনা: সুতরাং, এই সমস্ত সংখ্যার জন্য ... একটি সিএসপিআরএনজি বীজ করতে এন্ট্রপি প্রয়োজন required এটি হয়ে গেলে, একটি সিএসপিআরএনজি আমাদের (সাধারণত) এনট্রপি সংগ্রহের তুলনায় সুরক্ষার অ্যাপ্লিকেশনগুলির জন্য প্রয়োজনীয় সমস্ত অবিশ্বাস্য বিট সরবরাহ করবে। যদি অনির্দেশ্যতা প্রয়োজন না হয় যেমন সিমুলেশনের জন্য, একটি মার্সেন টুইস্টার আরও বেশি হারে ভাল পরিসংখ্যানগত বৈশিষ্ট্য সহ সংখ্যা সরবরাহ করবে।

সম্পাদনা করুন: যে কেউ নিরাপদ র্যান্ডম সংখ্যা প্রজন্মের সমস্যা বুঝতে ইচ্ছুক তাদের এটি পড়তে হবে: http://www.cigital.com/ whitepapers / dl / The_Importance_of_Reliable_Randomness.pdf


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

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

যথেষ্ট ঠিক পরিষ্কার. কিন্তু একই কি ক্রিপ্টোগ্রাফি অ্যাপ্লিকেশনগুলিতে সমানভাবে প্রয়োগ হবে না? এমনকি উত্তরের উত্তরটি এখানে বলেছে যে সিএসপিআরএনজি বীজের জন্য আপনার একটি হার্ডওয়্যার আরএনজি দরকার।
কেফ শেকটার

2
@ কেফসচেস্টার হ্যাঁ, সিএসপিআরএনজি বীজের জন্য ক্রিপ্টো অ্যাপ্লিকেশনগুলির সত্যিকারের এলোমেলো সংখ্যা প্রয়োজন। তবে অন্য সব কিছুর জন্য আমরা সেই সিএসপিআরএনজি ব্যবহার করতে পারি।
কোডসইনচাউস

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

7

সমস্ত পিআরএনজি সমস্ত ব্যবহারের জন্য উপযুক্ত নয়। উদাহরণস্বরূপ, জাভা.ইটিল.সিকিউরআরন্ডোম SHA1 হ্যাশ ব্যবহার করে, যার আউটপুট আকার 160 বিট। এর অর্থ এলোমেলো সংখ্যার সম্ভাব্য 2 টি 160 টি স্ট্রিম রয়েছে যা এটি থেকে আসতে পারে। যে হিসাবে সহজ। আপনি অভ্যন্তরীণ অবস্থার 2 160 টিরও বেশি মান পেতে পারবেন না । সুতরাং আপনি কোনও বীজ থেকে এলোমেলো সংখ্যার 2 160 টিরও বেশি অনন্য স্ট্রিম পেতে পারবেন না , আপনার বীজ কোথা থেকে এসেছে তা নির্বিশেষে। উইন্ডোজ CryptGenRandom 40-বাইট রাষ্ট্র ব্যবহার করতে বিশ্বাস করা হয়, এটি 2 আছে 320 র্যান্ডম সংখ্যার সম্ভব স্ট্রিম।

একটি স্ট্যান্ডার্ড 52-কার্ড ডেকে সাফ করার উপায়গুলির সংখ্যা 52 !, যা আনুমানিক 2 226 । সুতরাং, বীজ নির্বিশেষে, আপনি জাভা.ইটিল.সিকিউর র্যান্ডম ব্যবহার করতে পারবেন না কার্ডের ডেকে সাফল্যের জন্য। সেখানে আনুমানিক 2 হয় 66 সম্ভব shuffles যে এটি উত্পাদন করতে পারবে না। অবশ্যই, আমরা জানি না তারা কোনটি ...

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

নোট করুন যে java.util.SecureRandom ফলাফল উভয়ই অনাকাঙ্ক্ষিত এবং পরিসংখ্যানগতভাবে এলোমেলো হবে। কোনও পরিসংখ্যান পরীক্ষা কোনও সমস্যা চিহ্নিত করতে পারে না! তবে আরএনজির আউটপুট কার্ডের একটি ডেকে অনুকরণের জন্য প্রয়োজনীয় সমস্ত সম্ভাব্য আউটপুটগুলির সম্পূর্ণ ডোমেনটি কভার করতে যথেষ্ট বড় নয়।

এবং মনে রাখবেন, আপনি যদি জোকারগুলিকে যুক্ত করেন তবে এটি 54! আপনার আবরণ করতে হবে, যার প্রায় 238 সম্ভাবনা দরকার poss


2
আপনি কেন এমন যত্ন নিচ্ছেন যে কিছু বদলে যাওয়া ঘটতে পারে না? এই সীমাবদ্ধতার কোনও পর্যবেক্ষণযোগ্য প্রভাব নেই।
কোডসইনচাউস

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

1
তবে এটি সনাক্তযোগ্য। আমি এটি একটি পরিচিত প্রক্রিয়া ব্যবহার করে সনাক্ত করেছি: উত্স কোড পর্যালোচনা এবং সমস্যা ডোমেনের জ্ঞান। এটাই লক্ষণীয়। আমি স্বয়ংক্রিয় পরিসংখ্যান বিশ্লেষণ ব্যবহার করতে পারি না। এটি java.util.Random বা মার্সেন টুইস্টার ব্যবহার করে এমন কেউ সনাক্ত করতে সক্ষম। পরিসংখ্যান বিশ্লেষণ কেবল আরএনজি / সমস্যা ডোমেনের অমিলের জন্য বৈধ সনাক্তকরণ প্রক্রিয়া নয়। ব্যর্থতা যে ডিটেক্টর পাস করে, সংজ্ঞা অনুসারে, সাফল্য হয় না।
প্যাকো হোপ

1
আমি কখনও এই বক্তব্যের সাথে একমত নই। আমি যা বলেছিলাম তা হল যে পরিসংখ্যান বিশ্লেষণটি আরএনজি / পিআরএনজি সঠিক তা প্রমাণযোগ্য নয়। এটি একটি মিথ্যা নেতিবাচক উদাহরণ। এটি ভুল হওয়া উচিত, তবে পরিসংখ্যান আউটপুট পরীক্ষা এটি পাস করবে। আমি যদি SHA1 (1), SHA1 (2), SHA1 (3) ... SHA1 (n) কে আমার "আরএনজি" হিসাবে ব্যবহার করি যা পরিসংখ্যান পরীক্ষায়ও পাস করবে। এটাও ভুল। সঠিক সংজ্ঞা "পরিসংখ্যান পরীক্ষায় পাস" এর সংজ্ঞা ছাড়িয়েও প্রসারিত। পরিসংখ্যান পরীক্ষায় উত্তীর্ণ হওয়া প্রয়োজনীয়, তবে পর্যাপ্ত নয়।
প্যাকো হোপ

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

6

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


6

"সত্য" র্যান্ডম এবং "সিউডো" র্যান্ডম সংখ্যার মধ্যে পার্থক্য হ'ল পূর্বাভাসযোগ্যতা। এই উত্তর ইতিমধ্যে সরবরাহ করা হয়েছে।

যাইহোক, পূর্বাভাসযোগ্যতা অগত্যা বেশিরভাগ উদাহরণগুলির মতো খারাপ জিনিস নয়। ভবিষ্যদ্বাণী ভাল যে বিরল ক্ষেত্রে এর একটি ব্যবহারিক উদাহরণ এখানে দেওয়া হয়েছে: গ্লোবাল পজিশনিং সিস্টেম।

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


2

এলোমেলোতার দ্রুত চেক করার জন্য, আপনি [0; 1) এলোমেলো স্থানাঙ্কের সাথে পয়েন্টগুলি নিয়ে তারপর কে-ডাইমেনশনাল কিউবে রাখুন। তারপরে আপনি এই কিউবটিকে সাবক्यूबগুলিতে টুকরো টুকরো টুকরো করার জন্য পদ্ধতিটি করেন - সুপরিচিত উপপাদ্য অনুসারে ওঠা-নামা সহ এই পদ্ধতিতে সাবক्यूबের প্রতিটি ভলিউম (বা সাবস্ফিয়ার) সঠিকভাবে পরিমাপ করতে হবে।

আপনি যেখানে মিলিত হবেন এলোমেলো মানের গুণ গুরুত্বপূর্ণ ...

  1. সুরক্ষা উদ্দেশ্যে। আপনি যখন আপনার মূল প্রজন্মের জন্য প্যারামিটার হিসাবে ব্যবহার করার জন্য নম্বর তৈরি করেন এবং এটি ভাল অনুমানযোগ্য - শত্রু এটির 100% সম্ভাবনা সহ এটি খুঁজে বের করবে এবং অনুসন্ধানের জন্য ক্ষেত্রটি আরও ছোট করবে।

  2. বৈজ্ঞানিক উদ্দেশ্য। বিজ্ঞানের ক্ষেত্রে আপনাকে অবশ্যই ভাল অবস্থায় গড় গড় হওয়া উচিত নয়, তবে বিভিন্ন এলোমেলো সংখ্যার মধ্যে পারস্পরিক সম্পর্কও বর্জন করতে হবে। সুতরাং আপনি যদি (a_i - a) (a_ {i + 1} -a) নেন এবং এর বিতরণটি পান তবে এটি অবশ্যই পরিসংখ্যানের সাথে সঙ্গতিপূর্ণ।

পেয়ার পারস্পরিক সম্পর্কটিকে "দুর্বল র্যান্ডমনেস" বলা হয়। আপনি যদি সত্যিকারের এলোমেলোতা চান তবে আপনার অবশ্যই আরও দুটি বৈকল্পের সাথে উচ্চতর ক্রম সম্পর্কিত হতে হবে।

আজ শুধুমাত্র কোয়ান্টাম মেকানিক্স জেনারেটর সত্যিকারের এলোমেলোতা সরবরাহ করে।


1

সত্য এলোমেলো কেন গুরুত্বপূর্ণ?

সত্যিকারের এলোমেলোতা প্রয়োজনীয়তার মূলত দুটি প্রধান কারণ রয়েছে:

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

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

পাইথনের পিআরএনজি কীভাবে যথেষ্ট ভাল নয়?

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

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


0

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

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

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

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

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


-5

ছোট গল্প:

সিস্টেমের বর্তমান মাইক্রোসেকেন্ড ব্যবহার করে একটি এলোমেলো বীজ উত্পাদন করে।

এই কৌশলটি বেশ পুরানো এবং এখনও কার্যকর রয়েছে।

ফোর্স ব্রুট ফ্যাক্টর বাদ দিয়ে, যেখানে আমি সমস্ত সম্ভাব্য সংখ্যায় "বাজি" দিয়ে প্রতিটি সংমিশ্রণ নির্ধারণ করতে পারি এবং এটি এই প্রশ্নের বিন্দু নয়, বিশেষত যখন বেশিরভাগ এলোমেলো সংখ্যা তার ব্যবহারের আগেই গোল হয়।

একটি উদাহরণ বলি, আমি কেবল 10 টি মান ব্যবহার করে বীজ নির্ধারণ করতে পারি। সুতরাং, বীজটি জেনে আমি পরবর্তী মানটি অনুমান করতে পারি।

আমি যদি বীজ = 1 ব্যবহার করি তবে আমি পরবর্তী ক্রমটি পেতে পারি:

1, 2, 3, 4, 5, 6, 7, 8, 9 ... (এবং আমি বাদ দিয়েছি যে বীজ আইডি 1 এবং পরবর্তী মান 10 ব্যবহার করেছে)

তবে, প্রতি "এনথ" মান প্রেরণ করলে কী হবে ?. বর্তমান মাইক্রোসেকেন্ড দ্বারা বীজ পরিবর্তন করা একটি সস্তা কৌশল (এটির জন্য অনেকগুলি সিপিইউ চক্রের প্রয়োজন হয় না)।

সুতরাং এখন ক্রমটি হ'ল: (বীজ = 1) 1, 2, 3, 4, 5, (বীজ = 2), 7, 9, 11, 13 ... (15?)

এক্ষেত্রে:

ক) কোন বীজটি ব্যবহার হয়েছিল তা আমি হ্রাস করতে পারি না।

খ) অবশ্যই, আমি পরবর্তী মানটি অনুমান করতে পারি না।

গ) কেবলমাত্র অনুমান যে আমি করতে পারি তা হ'ল পরের বীজটি একটি বড় সংখ্যা হতে পারে।

যাইহোক, বেশিরভাগ আধুনিক র্যান্ডম জেনারেটর অ্যালগরিদম ইতিমধ্যে হুডের নীচে এই কৌশলটি ব্যবহার করে।

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


2
এটি একটি বরং খারাপ ধারণা এবং এটি এমন জিনিসের জন্য দুর্বলতার উত্স যা ট্রুলি অনির্দেশ্য ক্রম প্রয়োজন। আপনি যদি মাইক্রোসেকেন্ডগুলি গ্রহণ করেন তবে আপনার কাছে কেবল 10 ^ 6 বীজ সম্ভাবনা রয়েছে যা বরং কম।
HoLyVieR

@ হোলিভিআর: আপনি যদি সুরক্ষা সম্পর্কে মনোযোগ দেন তবে এটি অবশ্যই একটি খারাপ ধারণা, তবে আপনি যতটা খারাপ ব্যবহার করেন না: আপনি সাধারণত মাইক্রোসেকেন্ড ব্যবহার করবেন যেহেতু সিস্টেম শুরুর পরে (বা ইউনিক্স যুগটি ....) সম্ভাব্য মানগুলির পরিসরকে উল্লেখযোগ্যভাবে বৃদ্ধি করে।
মাইক্রা

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

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

অনলাইন সার্ভারগুলির জন্য, সিস্টেম আপটাইম তথ্য কখনও কখনও প্রকাশ্যে দেওয়া হয়। অথবা আপনি এটি একটি স্ট্যাটাস পৃষ্ঠা থেকে পেতে পারেন "ঘটনাগুলি Server আবার সার্ভার আপ"। অথবা আপনি পিং করতে পারেন, একটি বড় ডাউনটাইম অপেক্ষা করতে পারেন এবং নোট করুন এটি কোনও মেশিন রিবুট হতে পারে (যা কয়েক মিলিয়ন মিলিয়ন সময় চেক করতে দেবে, যা কম)।
ডেরিকসন
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.