অনন্য হয়ে এলোমেলো ints নির্ভর করতে গ্রহণযোগ্য?


42

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


47
ক্রমিক সংখ্যার ব্যবহার কেন এটি কাটছে না?
30:18

20
আপনি কেবল একটি ইনক্রিমেন্টিং ইন্ট ব্যবহার করবেন না কেন? আপনার বর্ণনার স্বতন্ত্রতা বৈশিষ্ট্যগুলির জন্য নকশাকৃত জিইউইডিগুলি 328 আকারে নয় 128 বিট আকারের Ro
রবার্ট হার্ভে

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

27
যদি আপনার "এলোমেলো সংখ্যার জেনারেটর" গ্যারান্টি দেয় যে প্রতিটি অন্যান্য সংখ্যা উত্পন্ন না হওয়া অবধি নির্দিষ্ট নম্বরটির পুনরাবৃত্তি হবে না, এটি খুব দরিদ্র এলোমেলো সংখ্যা জেনারেটর! একই যুক্তি দ্বারা, মুদ্রা টসেসের একমাত্র সম্ভাব্য "এলোমেলো" ক্রমটি এইচটিএইচটিএইচটিএইচটি ....
অ্যালেফজেরো

17
"আমার কাছে অনন্য শনাক্তকারীদের প্যাকেটগুলির প্রয়োজন" এই প্রয়োজনীয়তার লঙ্ঘন হওয়ার পরিণতি কী? শব্দটির কঠোর পাঠে আপনার যদি অনন্য শনাক্তকারীদের প্রয়োজন হয় তবে আপনার অবশ্যই সেন্ট্রালাইজড সিস্টেমটি ডলিং শনাক্তকারীদের থাকতে হবে (যেমন কীভাবে পৃথক নেটওয়ার্ক কার্ড সংস্থাগুলিকে MACs নিয়োগ করা হয়)। সম্ভবত আপনার "প্রয়োজনীয়" এর নরম সংজ্ঞা রয়েছে। কোমলতার স্তরটি বুঝতে পেরে আপনি প্রাপ্ত উত্তরগুলি নাটকীয়ভাবে পরিবর্তন করবে।
আম্মন

উত্তর:


142

জন্মদিনের প্যারাডক্স থেকে সাবধান থাকুন ।

মনে করুন আপনি আকারের সেট (এন ক্ষেত্রে 2 = 32 your 32) থেকে এলোমেলো মানের (অভিন্ন, স্বতন্ত্রভাবে) একটি ক্রম তৈরি করছেন।

তারপরে, জন্মদিনের প্যারাডক্সের জন্য থাম্বের নিয়মটি বলে যে একবার আপনি স্কয়ারটি (এন) মানগুলি তৈরি করার পরে কমপক্ষে কমপক্ষে 50% সম্ভাবনা রয়েছে যে সংঘর্ষ ঘটেছে, এটি হ'ল কমপক্ষে দুটি অভিন্ন মান রয়েছে উত্পন্ন ক্রম।

এন = 2 ^ 32 এর জন্য স্কয়ার্ট (এন) = 2 ^ 16 = 65536. সুতরাং আপনি প্রায় 65 ক শনাক্তকারী তৈরি করার পরে সম্ভবত তাদের মধ্যে দুটি সংঘর্ষ হওয়ার সম্ভাবনা বেশি! আপনি যদি প্রতি সেকেন্ডে কোনও শনাক্তকারী তৈরি করেন তবে এটি এক দিনেরও কম সময়ে ঘটবে; বলা বাহুল্য, অনেক নেটওয়ার্ক প্রোটোকল তার চেয়ে দ্রুত গতিতে কাজ করে।


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

6
(গণিত রেন্ডার করতে এখানে ক্লিক করুন) এর মূল্য কী, তার জন্য the q sqrt {N} $ আনুমানিক একটি ধ্রুবক ফ্যাক্টর অবধি সঠিক; $ N = 2 ^ {32} $ এর জন্য প্রকৃত প্রান্তিকতা 1 77১6464, কারণ এটি $ n $ এর ক্ষুদ্রতম মান যেমন $ \ প্রোড_ {কে = 1} ^ {n-1} (1 - কে / এন) <1 / 2. $
wchargin

4
@ ওয়াচারগিন: সম্ভাব্যতা 0.5 টি হিট করার বিষয়ে সত্যই কোনও জাদু নেই; উল্লেখযোগ্যটি হ'ল এন বর্ধনের সাথে সম্ভাবনা তুলনামূলক দ্রুত বৃদ্ধি পাচ্ছে 32২-বিট সনাক্তকারীদের যদি এলোমেলো সংঘর্ষের সামান্য তবে তুচ্ছ ঘটনা ঘটে তবে একটি 40-বিট সনাক্তকারী প্রায় কোনওই থাকত না।
supercat

3
@ সুপের্যাট: সবই সত্য। আমি কেবল অনুধাবন করেছি যে যদি কেউ এই ধরণের ধ্রুবক সরবরাহ করে তবে কেউ একটি সঠিক মানও দিতে পারে :-)
wchargin

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

12

এ সংখ্যাগুলিতে পর্যাপ্ত পরিমাণে বিট থাকলে এলোমেলো সংখ্যার উপর নির্ভর করার পক্ষে এটি ব্যাপকভাবে গ্রহণযোগ্য বলে বিবেচিত হয়। এমন ক্রিপ্টোগ্রাফিক প্রোটোকল রয়েছে যেখানে এলোমেলো সংখ্যার পুনরাবৃত্তি করা পুরো সুরক্ষাটি ভেঙে দেয়। এবং যতক্ষণ না এলোমেলো নম্বর জেনারেটর ব্যবহার করা হচ্ছে তাতে গুরুতর দুর্বলতা নেই, এটি কোনও সমস্যা হয়নি।

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

সুতরাং 122 বিটের উপর নির্ভর করে এমন মান রয়েছে যা এলোমেলো আইডিটিকে অনন্য করতে যথেষ্ট, তবে 32 বিট অবশ্যই যথেষ্ট নয় enough ৩২ বিট আইডি সহ এটি সংঘর্ষের ঝুঁকি ৫০% পৌঁছানোর আগে প্রায় ২¹⁶ আইডি লাগবে কারণ 2¹⁶ আইডির সাথে 2³¹ টি জোড়ার কাছাকাছি থাকবে যার প্রতিটি একটি সংঘর্ষ হতে পারে।

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

160 বিটের আউটপুট সহ SHA1 হ্যাশ ফাংশনটি আর নিরাপদ হিসাবে বিবেচিত হবে না যা অংশে রয়েছে কারণ 160 বিট আউটপুটগুলির স্বতন্ত্রতার গ্যারান্টি দিতে যথেষ্ট নয়। আধুনিক হ্যাশ ফাংশনগুলির 224 থেকে 512 বিট পর্যন্ত আউটপুট রয়েছে। এলোমেলোভাবে উত্পাদিত আইডিগুলির উচিত একই সুরক্ষার মার্জিনের সাথে স্বতন্ত্রতা নিশ্চিত করার জন্য একই মাপের লক্ষ্য।


12
এসএএএ -১টিকে অরক্ষিত হিসাবে বিবেচনা করা হয় কারণ অ্যালগোরিদমের বিপরীতে নির্দিষ্ট আক্রমণগুলি (অর্থাত্ নন-র্যান্ডম) নিজেই রয়েছে যা ব্রুট ফোর্সের চেয়ে দ্রুত সংঘর্ষগুলি খুঁজে পেতে পারে, কারণ এলোমেলো সংঘর্ষের উচ্চতর সম্ভাবনা নেই। মোটামুটি অনুমান অনুসারে 122 বিট এবং প্রতি সেকেন্ডে 1 বিলিয়ন (10 ^ 9) আইডি প্রজন্মের হারের সাথে সংঘর্ষের 50% সম্ভাবনা পৌঁছানোর আগে এটি 73 বছর ধরে সময় নিতে পারে।
বিট্রি

sqrt(2^122)= 2.3 কোয়াড্রিলিয়ন কোয়াড্রিলিয়ন
ইউআইডি

2
@ 8 বিট্রি বিটকয়েন নেটওয়ার্ক প্রতি 10 মিনিটে 2⁷⁰ SHA2 হ্যাশ গণনা করে। যদি এটি SHA1 হ্যাশ হত তবে এটির সংঘর্ষ তৈরি হতে কেবল এক সপ্তাহ সময় লাগবে। যদি ইউআইডিগুলি একই গতিতে উত্পাদিত করা হত যে বিটকয়েন গণনাগুলি হ্যাশ করে তবে এটি একটি সংঘর্ষ তৈরি করতে 2 সেকেন্ডেরও কম সময় নেয়।
ক্যাস্পারড

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

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

3

আমি এই খারাপ অভ্যাস বলব। এলোমেলো সংখ্যা উত্পন্ন করে কেবল অনন্য সংখ্যা তৈরি করে না, তারা কেবল এলোমেলো সংখ্যা তৈরি করে। এলোমেলো বিতরণে কিছু নকল অন্তর্ভুক্ত থাকতে পারে। সময়ের কোনও উপাদান যুক্ত করে আপনি এই পরিস্থিতিতে গ্রহণযোগ্যভাবে অসম্ভব হয়ে উঠতে পারেন। যদি আপনি বর্তমান সময়টি মিনিসেকেন্ডে ঘড়ি থেকে পান। এটার মতো কিছু:

parseToInt(toString(System.currentTimeMillis()) + toString(Random.makeInt()))

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


9
কিছু সিস্টেমে 1 এমএস দীর্ঘ সময় থাকতে পারে।
কোয়ান্ট_দেব

7
এটি আসলে মোটেও সংঘর্ষের সম্ভাবনা হ্রাস করে না। এন সংখ্যার পরে সংঘর্ষের সম্ভাবনা হ'ল ওপির মূল সমাধানের সমান। বর্তমান সময়কে বীজ হিসাবে ব্যবহারের কৌশলটি যথাযথভাবে কীগুলি নির্ধারিত করার সময় ব্যবহৃত হয়।
আম্মন

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

2
@ কর্টআ্যাম্মান এটি বর্তমান সময়টিকে বীজ হিসাবে ব্যবহার করছে না এবং এটি অবশ্যই কার্যকর হবে যতক্ষণ না N এন সংখ্যাগুলি একই মিলিসেকেন্ড চলাকালীন তৈরি হয় নি, কারণ বিভিন্ন টাইমস্ট্যাম্প অংশযুক্ত দুটি সংখ্যা কখনও সংঘর্ষে না ঘটে । যদি আপনি কল্পনা করেন যে এক সেকেন্ডে এক প্যাকেটের অন্য উত্তরের উদাহরণটি এক দিনেরও কম সময়ে সংঘর্ষের 50% সম্ভাবনা রয়েছে, তবে এই প্রতিটিতে একটি প্যাকেটে প্রতি মুহূর্তে 0% সংঘর্ষ হওয়ার সম্ভাবনা রয়েছে, কমপক্ষে currentTimeMillisপ্রায় গুটিয়ে যাওয়ার সময় পর্যন্ত ।
hobbs

3
@ হোবস আপনি পূর্ণসংখ্যার ওভারফ্লো সম্পর্কে ভুলে গেছেন। এখন যদি ওপি ব্যবহৃত চাবিটি 2 টি সংখ্যাসমৃদ্ধ একটি কাঠামো ছিল, যার মধ্যে একটি রয়েছে System.currentTimeMillisএবং একটি রয়েছে Random.makeInt(), তবে সংঘর্ষের সম্ভাবনা যথেষ্ট হ্রাস পাবে। যাইহোক, এই উদাহরণের কোডটি যা তা করে তা নয়। প্রদত্ত কোন পূর্ববর্তী সময় এবং র্যান্ডম মান, এবং কোন বর্তমান সময়, সংঘর্ষের সম্ভাবনা দুই র্যান্ডম প্রথম স্থানে colliding সংখ্যার সম্ভাব্যতা অভিন্ন।
কর্ন

3

এটি ব্যর্থতার সম্ভাবনা এবং ব্যর্থতার পরিণতি উভয়ের উপর নির্ভর করে।

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


1

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


0

এটি ধরে নেওয়া গ্রহণযোগ্য হতে পারে যে এলোমেলো সংখ্যাগুলি অনন্য হবে তবে আপনাকে যত্নবান হতে হবে।

ধরে নেওয়া যাক আপনার র্যান্ডম সংখ্যা সমানভাবে বিতরণ করা হয়, একটি সংঘর্ষের সম্ভাবনা মোটামুটিভাবে (ঢ হয় 2 /2) / ট যেখানে n র্যান্ডম সংখ্যার নম্বর উৎপন্ন এবং k সম্ভাব্য মান একটি "র্যান্ডম" সংখ্যা নিতে পারে সংখ্যা।

আপনি জ্যোতির্বিজ্ঞানহীনভাবে কোনও সংখ্যায় রাখেন না তাই এটিকে 2 30 এ 1 হিসাবে নেওয়া (মোটামুটি এক বিলিয়নে)। আরও বলুন আপনি 2 30 টি প্যাকেট তৈরি করেছেন (প্রতিটি প্যাকেট যদি প্রায় এক কিলোবাইট ডেটা উপস্থাপন করে তবে এর অর্থ মোট এক ডেটা টেরাইবাইট, বড় তবে অকল্পনীয়ভাবে নয়)। আমরা খুঁজে পাই আমাদের কমপক্ষে 2 89 টি সম্ভাব্য মান সহ একটি এলোমেলো সংখ্যা প্রয়োজন ।

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

দ্বিতীয়ত আপনার এলোমেলো নম্বর জেনারেটরের পর্যাপ্ত পরিমাণে অভ্যন্তরীণ অবস্থা থাকা দরকার। যদি আপনার এলোমেলো সংখ্যার জেনারেটরের কেবলমাত্র 32-বিট অভ্যন্তরীণ অবস্থা থাকে তবে আপনি এটি থেকে যত বড় মান উত্পন্ন করবেন তা বিবেচনা না করে আপনি কেবলমাত্র সর্বাধিক 2 32 সম্ভাব্য মান পাবেন।

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

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


0

উপরের উত্তরগুলির কয়েকটি অন্তর্নির্মিত হ'ল ধারণাটি এলোমেলো সংখ্যা জেনারেটরটি সত্যই 'সমতল' - যে কোনও দুটি সংখ্যার পরেরটি উত্পন্ন হওয়ার সম্ভাবনা একই।

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

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


0

প্রচুর লোক ইতিমধ্যে উচ্চ-মানের উত্তর দিয়েছে, তবে আমি কয়েকটি ছোটখাটো পয়েন্ট যুক্ত করতে চাই: প্রথমত, জন্মদিনের প্যারাডক্স সম্পর্কে @ নমডিকটাইপের বক্তব্যটি দুর্দান্ত

আরেকটি বিষয়: এলোমেলোতা উত্পন্ন এবং সংজ্ঞায়িত করার মতো সহজ সরল নয় যতটা সাধারণ মানুষ ধরে নিতে পারে। (আসলে, এলোমেলোতার জন্য প্রকৃতপক্ষে পরিসংখ্যান পরীক্ষা রয়েছে ) tests

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

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

আরও একটি বিষয় বিবেচনা করতে হবে: একটি একক গেম খেলে পাওয়ারবল জয়ের সুযোগটি যেমনটি আমি বুঝতে পেরেছি, প্রায় 175 মিলিয়নে 1 টি। তবে কারও বিজয়ী হওয়ার প্রতিক্রিয়া তার চেয়ে যথেষ্ট বেশি। আপনি মতভেদ আরও আগ্রহী হন কেউ কোন বিশেষ সংখ্যা "বিজয়ী" / সদৃশ হওয়ার মতভেদ তুলনায় "দ্য উইনিং" (অর্থাত সদৃশ হচ্ছে)।


যদি কেউ এমনভাবে 4096-বিট সনাক্তকারী তৈরি করে যা প্রতিটি বিট একই বা অন্য কোনও শনাক্তকারীতে উত্পন্ন অন্য কোনও বিটের তুলনায় 0 বা 1 স্বতন্ত্র হওয়ার সম্ভাবনা থাকে তবে কোনও দুটি সনাক্তকারী মিলে যাওয়ার সম্ভাবনা অদৃশ্যভাবে ছোট হওয়া সত্ত্বেও যদি কেউ পর্যবেক্ষণযোগ্য মহাবিশ্বের মোটামুটি -৯.০E ই81 পরমাণুর জন্য এলোমেলোভাবে পৃথক পরিচয়দানকারী তৈরি করে থাকে। এই জাতীয় শনাক্তকারীরা প্রায় অবশ্যই অনন্য হবে এই বিষয়টি তাদের
কোনওভাবেই

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

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

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

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

0

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


-1

না অবশ্যই না. আরএনজি না করে আপনি প্রতিস্থাপন ছাড়াই নমুনাগুলি ব্যবহার করেন না তবে নকলের খুব কম হলেও সুযোগ রয়েছে।

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