জাভা এর ইউআইডি.আরন্ডম ইউইউডিটি কতটা ভাল?


311

আমি জানি যে র্যান্ডমাইজড ইউআইডিগুলিতে তত্ত্বের সংঘর্ষের জন্য খুব, খুব কম সম্ভাবনা রয়েছে, তবে আমি ভাবছি, বাস্তবে জাভা এর randomUUID()সংঘর্ষ না হওয়ার দিক থেকে কতটা ভাল ? কারও কি ভাগ করার কোনও অভিজ্ঞতা আছে?


10
আমার অভিজ্ঞতায় আমি কখনও সংঘর্ষ দেখিনি ;-)
থিলো

4
অ্যালগরিদমগুলি আরএফসি
স্কাফম্যান

8
@ স্কাফম্যান: আরএফসি র্যান্ডম অঙ্কগুলি তৈরি করতে ব্যবহৃত অ্যালগরিদম সম্পর্কে একেবারে কিছুই বলেছে না।
মাইকেল বর্গওয়ার্ট

4
যেহেতু এটি আরও উন্মুক্ত সমাপ্ত প্রশ্ন, আমার ধারণা আমি কোনও উত্তরকে সঠিক উত্তর হিসাবে চিহ্নিত করব না; পরিবর্তে, আমি উত্তম বলে মনে করি প্রতিটি উত্তরকে আমি একটি ভোট দেব :)
অ্যালভিন

5
উইকিপিডিয়া থেকে: ... অন্য কথায়, পরের 100 বছরের জন্য প্রতি সেকেন্ডে 1 বিলিয়ন ইউইউডি তৈরির পরে, কেবলমাত্র একটি সদৃশ তৈরির সম্ভাবনা প্রায় 50% হবে।
মাভিআরএসসি

উত্তর:


168

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

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


34
"একটি বাস্তবায়নের জন্য সূক্ষ্ম বাগ থাকা সর্বদা সম্ভব ..." - বা (টিন-ফয়েল টুপি দান করা) ... ইচ্ছাকৃত সূক্ষ্ম ত্রুটি রয়েছে। <:-)
স্টিফেন সি

25
সংঘর্ষের প্রশ্নে ক্রিপ্টোগ্রাফিক শক্তি সম্পূর্ণ অপ্রাসঙ্গিক।
osa

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

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

@ ইউজার ৫০863৩৩: আমি অবশ্যই সেই নির্দিষ্ট ক্ষেত্রে ১০০% সংঘর্ষের হার পাব বলে প্রত্যাশা করব, তবে এটি একটি অত্যন্ত নির্দিষ্ট কেস যা "সামঞ্জস্যপূর্ণ, সঠিক-সদৃশ সার্ভার সেটআপ এবং স্টার্টআপ পদ্ধতিগুলির" চেয়ে অনেক বেশি এগিয়ে। আমি নিশ্চিত যে আপনি যদি কোনও ভিএমকে ক্লোন করে সাধারনত চালিয়ে যান তবে কোনও ধরণের সংঘর্ষের হার আপনি পাবেন না pretty সিকিউরর্যান্ডমের স্ব-বীজ কিছু বাস্তব এনট্রপি পাওয়ার জন্য খুব শক্ত চেষ্টা করে, যদি এটির কিছু না পায় তবে মৃত্যুদণ্ড কার্যকর করার বিষয়টি ব্লক করে দেয়: seancassidy.me/wiggle-the-mouse-to-fix-the-test.html
মাইকেল বর্গওয়ার্ট

114

উইকিপিডিয়ায় একটি খুব ভাল উত্তর রয়েছে http://en.wikedia.org/wiki/Universally_unique_ شناختfier#

কমপক্ষে একটি সংঘর্ষের 50% সম্ভাবনা থাকার জন্য এলোমেলো সংস্করণ 4 ইউআইডি'র সংখ্যা তৈরি করা দরকার যা নিম্নরূপে গণনা করা হয়:

...

এই সংখ্যাটি প্রায় 85 বছর ধরে প্রতি সেকেন্ডে 1 বিলিয়ন ইউইউডি উত্পন্ন করার সমতুল্য এবং ইউআইইডি প্রতি 16 বাইটে এই বহু ইউআইডি রয়েছে এমন একটি ফাইল প্রায় 45 টি এক্সাবাইট হবে, যা বর্তমানে বিদ্যমান বৃহত্তম ডাটাবেসের চেয়ে বহুগুণ বড়, যা চালু রয়েছে শত শত পেটাবাইটের ক্রম।

...

সুতরাং, সদৃশ হওয়ার এক বিলিয়ন সুযোগের মধ্যে একটির জন্য, 103 ট্রিলিয়ন সংস্করণ 4 ইউআইডি তৈরি করতে হবে।


56
আমি এই পৃষ্ঠাটি থেকে উদ্ধৃতিও দিয়েছিলাম, "পৃথিবীর প্রতিটি মানুষ 600০০ মিলিয়ন ইউইউডি মালিক হলে একটি নকলের সম্ভাবনা প্রায় 50% হবে।"
জেফ অ্যাক্সেলরোড

24
এটি শুধুমাত্র সত্যিকারের এলোমেলোতার জন্য সত্য, জাভা ইউআইডি-র মতো সিউডোরেন্ডম সংখ্যার জন্য নয়।
মার্কাস

9
@ মারকাস: সম্পূর্ণ ভুল ভাল সিউডোর্যান্ডম আরএনজি'র বিশেষত ক্রিপ্টোগ্রাফিকভাবে শক্তিশালীগুলির জন্য সংঘর্ষের সম্ভাবনা "সত্য" এলোমেলোতার চেয়ে আলাদা নয়।
মাইকেল বর্গওয়ার্ট

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

13
এটি জিজ্ঞাসিত প্রশ্নের উত্তর দেয় না। প্রশ্নটি জাভাটির এলোমেলোতার গুণমান UUID.randomUUID()সম্পর্কে, কোনও প্রদত্ত নিখুঁত র্যান্ডম সংখ্যা জেনারেটরের তাত্ত্বিক সম্ভাবনার বিষয়ে নয়।
kratenko

69

কারও কি ভাগ করার কোনও অভিজ্ঞতা আছে?

সেখানে 2^122একটি টাইপ -4 ইউআইডি জন্য সম্ভাব্য মান । (অনুমানটি বলে যে আপনি টাইপের জন্য 2 বিট এবং সংস্করণ সংখ্যার জন্য আরও 4 বিট হারাবেন))

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

যে কেউ সম্ভাবনা দেখেছেন (যেমন বাস্তবে লক্ষ্য করেছেন) বাস্তব জীবনে ডুপ্লিকেট ) তা অদৃশ্যভাবে ছোটের চেয়েও ছোট ... সংঘর্ষের সন্ধানের ব্যবহারিক অসুবিধার কারণে।

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

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


1 - ধরে নেই যে আপনি কোনও বেনামে মন্তব্যকারী হিসাবে "" কিছু ধরণের বাইনারি বিট্রি "ব্যবহার করেছেন, প্রতিটি ইউআইডি O(NlogN)-র বিটগুলির Nকম ঘনত্ব এবং এলোমেলো বিতরণ ধরে স্বতন্ত্র ইউআইডিগুলিকে উপস্থাপন করার জন্য র‌্যাম মেমরির বিট লাগবে । এখন এটির 1,000,000 এবং আপনি যে সেকেন্ডের জন্য পরীক্ষাটি চালাতে চলেছেন তার সংখ্যাটি গুন করুন। আমি মনে করি না যে এটি একটি উচ্চ মানের আরএনজির সংঘর্ষের জন্য পরীক্ষা করার জন্য প্রয়োজনীয় সময়ের জন্য বাস্তবিক। এমনকি (অনুমানমূলক) চতুর উপস্থাপনা সহ নয়।


4
"(এবং সদৃশটি সনাক্ত করতে, আপনার পূর্বে উত্পন্ন সমস্ত ইউইউডিগুলির তুলনায় প্রতি সেকেন্ডে 1 মিলিয়ন নতুন ইউআইডি তুলনা করার সমস্যাটি সমাধান করতে হবে!) -" অংশটি তুলনামূলকভাবে সোজাভাবে ধরে নেওয়া যায় যে আপনি কিছুতে আপনার ইউয়েডগুলি সংরক্ষণ করেছেন বাইনারি গাছের কাঠামোর ধরণ, এটি নতুন ইউইডে কেবল একটি বৃক্ষ বংশোদ্ভূত হবে। পূর্ববর্তী উত্পন্ন সমস্ত uuids এর সাথে আপনার আলাদাভাবে তুলনা করার দরকার হবে না।
user467257

20

আমি কোনও বিশেষজ্ঞ নই, তবে আমি ধরে নিয়েছি যে যথেষ্ট স্মার্ট লোক বছরের পর বছর ধরে জাভার র্যান্ডম নম্বর জেনারেটরের দিকে নজর রেখেছিল। অতএব, আমিও ধরে নিয়েছি যে এলোমেলো ইউআইডিগুলি ভাল। তাই আপনি যদি সত্যিই তাত্ত্বিক সংঘর্ষের সম্ভাবনা থাকা উচিত (যা 1 সম্পর্কে: 3 × 10 ^ 38 ।? সব সম্ভব UUID জানা জন্য নেই কেহ জানেন কিভাবে শুধুমাত্র র্যান্ডম UUID জানা এই পরিবর্তন আনা হয়েছে তা কি 1/(16*4)উপরোক্ত?)

আমার ব্যবহারিক অভিজ্ঞতা থেকে, আমি এখনও পর্যন্ত কোনও সংঘর্ষ দেখিনি। যেদিন আমি আমার প্রথমটি পেয়েছি আমি সম্ভবত অবাক হয়ে দীর্ঘ দাড়ি বাড়িয়েছি;)


10
উইকিপিডিয়া থেকে: ... অন্য কথায়, পরের 100 বছরের জন্য প্রতি সেকেন্ডে 1 বিলিয়ন ইউইউডি তৈরির পরে, কেবলমাত্র একটি সদৃশ তৈরির সম্ভাবনা প্রায় 50% হবে।
মাভিআরএসসি

1
প্রকৃতপক্ষে উইকিপিডিয়া বলছে এটি পরবর্তী 85 বছরের জন্য ... আমি বলি এটির উপর নির্ভর করবেন না, কেউ আপনার মতো একই
ইউইউডি

12

একজন প্রাক্তন নিয়োগকর্তার কাছে আমাদের কাছে একটি অনন্য কলাম ছিল যাতে একটি র্যান্ডম ইউইড থাকে। এটি স্থাপনের পরে প্রথম সপ্তাহে আমরা একটি সংঘর্ষ পেয়েছিলাম। অবশ্যই, প্রতিক্রিয়াগুলি কম তবে সেগুলি শূন্য নয়। এজন্য লগ 4 জ 2 এ ইউইউডিটিল.জেটটাইমবেসডউইউড রয়েছে। এটি একটি ইউইউডি উত্পন্ন করবে যা 8,925 বছরের জন্য অনন্য as যতক্ষণ না আপনি একক সার্ভারে 10,000 ইউইউডি / মিলিসেকেন্ডের বেশি তৈরি করেন না।


2
হ্যাঁ. তবে প্রশ্নটি এলোমেলো (অর্থাত্ টাইপ -4) ইউআইডি সম্পর্কে জিজ্ঞাসা করছে।
স্টিফেন সি

1
এটি সংঘর্ষ হওয়ার সম্ভাবনা সম্পর্কে জিজ্ঞাসা করছে। নিহিততা হ'ল তিনি সেগুলি এড়াতে নিশ্চিত হতে চান।
rgoers

1
(সংঘর্ষটি সম্ভবত পিআরএনজির বীজ বপনের জন্য এলোমেলোতার ভাঙা উত্সের কারণে হয়েছিল। আমি ভেবেছিলাম যে খাঁটি সুযোগের কারণে এটি সম্ভবত সম্ভব হয়েছিল।)
স্টিফেন সি

9

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


1
এই ব্যাখ্যাটি বাস্তবে সংঘর্ষগুলি না দেখার জন্য আমাকে আশাবাদী করে তোলে। আপনি কি এই বিবৃতিটির জন্য কোনও রেফারেন্স নির্দেশ করতে পারেন (কিছু উত্স কোড আরও ভাল হবে)?
ড্রাগন মারজানভিভিć

এটি ietf.org/rfc/rfc4122.txt এ পাওয়া গেছে । তবুও বাস্তবায়ন দেখতে দুর্দান্ত হবে।
ড্রাগন মারজানভিভিć

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

8

সংঘর্ষের 50% সুযোগে পৌঁছতে কতগুলি ইউআইডি তৈরি করতে হবে তার উত্তরের অনেকগুলি আলোচনা করে। তবে 50%, 25% বা এমনকি 1% সংঘর্ষের সম্ভাবনা কোনও অ্যাপ্লিকেশনটির পক্ষে মূল্যহীন নয় যেখানে সংঘর্ষ অবশ্যই (কার্যত) অসম্ভব হতে পারে।

প্রোগ্রামাররা কি নিয়মিতভাবে "অসম্ভব" হিসাবে অন্যান্য ঘটনাগুলি ঘটতে পারে এবং ঘটতে পারে?

আমরা যখন কোনও ডিস্ক বা মেমরিতে ডেটা লিখি এবং এটি আবার পড়ি, তখন আমরা ডেটা সঠিক বলে মনে করি। আমরা কোনও দুর্নীতি সনাক্ত করতে ডিভাইসের ত্রুটি সংশোধনের উপর নির্ভর করি। তবে সনাক্ত করা ত্রুটির সম্ভাবনা আসলে প্রায় 2 -50 এর কাছাকাছি ।

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

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


তুলনা করার পয়েন্ট হিসাবে, পাওয়ারবল জ্যাকপট জয়ের সুযোগটি 300 মিলিয়ন জনের মধ্যে 1, তবে 10 থেকে 20 মিলিয়ন টিকিটের বিক্রয় সাধারন। মুল বক্তব্যটি হ'ল বহু মানুষ "অসম্ভব" কে কয়েক লক্ষ লক্ষের মধ্যে একটি সুযোগের চেয়ে কম হিসাবে সংজ্ঞায়িত করে ।
এরিকসন

4

যেহেতু বেশিরভাগ উত্তর তত্ত্বকে কেন্দ্র করে আমার মনে হয় যে আমি আমার ব্যবহারিক পরীক্ষা দিয়ে আলোচনায় কিছু যুক্ত করতে পারি। আমার ডাটাবেসে আমার জাভা 8 ইউআইডি.আরন্ডম ইউইউডি () ব্যবহার করে প্রায় 4.5 মিলিয়ন ইউআইডি উত্পন্ন হয়েছে। নিম্নলিখিতগুলি কেবলমাত্র আমি জানতে পেরেছি:

c0f55f62 -b990-47bc-8caa-f42313669948

c0f55f62 -e81e-4253-8299-00b4322829d5

c0f55f62 -4979-4e87-8cd9-1c556894e2bb


b9ea2498-fb32-40ef-91ef-0ba 00060fe64

be87a209-2114-45b3-9d5a-86d 00060fe64


4a8a74a6-e972-4069-b480-বি dea1177b21f

12fb4958-bee2-4c89-8cf8-e dea1177b21f

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

সম্পাদনা করুন :

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

সত্যিকারের এলোমেলো সংখ্যার জেনারেটরে, শেষের ঘটনার সম্ভাবনা প্রায় = 0.007% হতে পারে । অতএব, আমি মনে করি আমার উপসংহার দাঁড়িয়েছে।

সূত্রটি এই উইকি নিবন্ধে en.wikedia.org/wiki/ জন্মদিন_প্রবলে ব্যাখ্যা করা হয়েছে


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

আমি সম্পূর্ণরূপে আপনার সাথে একমত যে মিলগুলি "ছোট" এবং সম্পূর্ণ সংঘর্ষ থেকে অনেক দূরে। যাইহোক, আমি কেবল জাওয়ার ইউআইডি.আরআন্ডম ইউআইডি () কে সত্যিকারের এলোমেলো সংখ্যা জেনারেটরের সাথে তুলনা করতে চেয়েছিলাম (এটি প্রশ্ন) is কিছু গণনা সহ আমরা দেখতে পাচ্ছি, সত্যিকারের এলোমেলো সংখ্যার জেনারেটরে, শেষের ঘটনার সম্ভাবনা প্রায় 1-e around (- 4500000 ^ 2 / (2 * 36 ^ 11)) = 0.007% = 1 এর মধ্যে হবে 13K। আমাকে খুব ভাগ্যবান হতে হবে :)
আন্দ্রে

1
4.5 মিলিয়ন আইটেম এবং 13 কে সুযোগে 1 দিয়ে, এর মতো আংশিক সংঘর্ষ কি 346 বার আশা করা যায় না ?
বেন লি

@ বেনলি না, আমরা আমাদের সাড়ে ৪ মিলিয়ন আইটেম রয়েছে তা বিবেচনা করে সেই ঘটনার সম্ভাবনাটি গণনা করেছি। প্রতিটি আইটেমের জন্য এটি 13 কে 1 করার সুযোগ নয়। আমি যে সূত্রটি ব্যবহার করেছি তা এই উইকি নিবন্ধে পাওয়া যাবে en.wikedia.org/wiki/ জন্মদিন_প্রব্লেম
André Pinheiro

2
আপনার প্রত্যাশা কি ছিল? অনুরূপ একই নয়, তাই না?
Koray Tugay

3

আমি গত বছর লটারিতে খেলি, এবং আমি কখনই জিতি না .... তবে মনে হয় লটারিতে বিজয়ী রয়েছে ...

ডক: http://tools.ietf.org/html/rfc4122

প্রকার 1: বাস্তবায়িত হয়নি। সংঘর্ষ সম্ভব যদি একই মুহুর্তে ইউইডির উত্পন্ন হয়। এই সমস্যাটিকে বাইপাস করতে ইমপ্লিট কৃত্রিমভাবে একটি-সিঙ্ক্রোনাইজ করা যায়।

প্রকার 2: কোনও প্রয়োগ কখনও দেখবেন না।

প্রকার 3: এমডি 5 হ্যাশ: সংঘর্ষ সম্ভব (128 বিট -2 প্রযুক্তিগত বাইট)

প্রকার 4: এলোমেলো: সংঘর্ষ সম্ভব (লটারি হিসাবে)। নোট করুন যে jdk6 ইমপ্ল একটি "সত্য" সুরক্ষিত র্যান্ডম ব্যবহার করবে না কারণ পিআরএনজি অ্যালগরিদম বিকাশকারী দ্বারা চয়ন করা হয়নি এবং আপনি সিস্টেমটিকে "দুর্বল" পিআরএনজি আলগো ব্যবহার করতে বাধ্য করতে পারেন। সুতরাং আপনার ইউইউডি অনুমানযোগ্য।

প্রকার 5: sha1 হ্যাশ: প্রয়োগ করা হয়নি: সংঘর্ষ সম্ভব (160 বিট -2 প্রযুক্তিগত বাইট)


4
লটারি জয়ের সম্ভাবনা 10 বা 100 মিলিয়ন (10 ^ 7 বা 10 ^ 8) এর মধ্যে একটি বা এটির মতো। 128 বিট র্যান্ডম সংখ্যার সাথে সংঘর্ষের সম্ভাবনা 3.4 * 10 ^ 28। আমাকে যে কোনও সময় লটারির টিকিট দিন!
স্টিফেন সি

0

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

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