জিআইইডি অনন্য [বন্ধ] নয় এমন সহজ প্রমাণ


323

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

BigInteger begin = new BigInteger((long)0);
BigInteger end = new BigInteger("340282366920938463463374607431768211456",10);  //2^128
for(begin; begin<end; begin++)
  Console.WriteLine(System.Guid.NewGuid().ToString());

আমি সি # ব্যবহার করছি।


107
একটি সফ্টওয়্যার বিকাশকারী হিসাবে, যদি কোনও ব্যবহারকারী আপনার কাছে এসে বলে এবং "এটি কাজ করছে না" বলে আপনি কী বলবেন?
জোশ জোর্দান

152
কয়েক ট্রিলিয়ন বছর অপেক্ষা করুন।
hobbs

67
আপডমডেড কারণ এটি আমি আজ অনলাইনে দেখেছি সবচেয়ে মজাদার বিষয়।
jrockway

32
@ জ্রোকওয়ে - লোল। আমি এই প্রশ্নটি সম্পর্কে মূলত ভুল নয় এমন কিছু খুঁজে পেতে ঝামেলা পোষণ করছি। আমি যতক্ষণ এটি তাকান ততই মজাদার এটি পায়।
টাইলার 1

243
এটি কেবল বিশ্বব্যাপী অনন্য, সুতরাং এটি আমাদের গ্রহে একমাত্র অনন্য। আপনি যদি সত্যই অনন্য আইডি চান তবে আপনার সর্বজনীন স্বতন্ত্র আইডি (ইউইউডি) ব্যবহার করতে হবে । আমি ধরে নিলাম যে আপনি কেবল আমাদের মহাবিশ্বের মধ্যে স্বতন্ত্রতার বিষয়ে আগ্রহী। :-)
tvanfosson

উত্তর:


407

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

using System;
using System.Collections.Generic;
using System.Linq;

namespace GuidCollisionDetector
{
    class Program
    {
        static void Main(string[] args)
        {
            //var reserveSomeRam = new byte[1024 * 1024 * 100];     // This indeed has no effect.

            Console.WriteLine("{0:u} - Building a bigHeapOGuids.", DateTime.Now);
            // Fill up memory with guids.
            var bigHeapOGuids = new HashSet<Guid>();
            try
            {
                do
                {
                    bigHeapOGuids.Add(Guid.NewGuid());
                } while (true);
            }
            catch (OutOfMemoryException)
            {
                // Release the ram we allocated up front.
                // Actually, these are pointless too.
                //GC.KeepAlive(reserveSomeRam);
                //GC.Collect();
            }
            Console.WriteLine("{0:u} - Built bigHeapOGuids, contains {1} of them.", DateTime.Now, bigHeapOGuids.LongCount());


            // Spool up some threads to keep checking if there's a match.
            // Keep running until the heat death of the universe.
            for (long k = 0; k < Int64.MaxValue; k++)
            {
                for (long j = 0; j < Int64.MaxValue; j++)
                {
                    Console.WriteLine("{0:u} - Looking for collisions with {1} thread(s)....", DateTime.Now, Environment.ProcessorCount);
                    System.Threading.Tasks.Parallel.For(0, Int32.MaxValue, (i) =>
                    {
                        if (bigHeapOGuids.Contains(Guid.NewGuid()))
                            throw new ApplicationException("Guids collided! Oh my gosh!");
                    }
                    );
                    Console.WriteLine("{0:u} - That was another {1} attempts without a collision.", DateTime.Now, ((long)Int32.MaxValue) * Environment.ProcessorCount);
                }
            }
            Console.WriteLine("Umm... why hasn't the universe ended yet?");
        }
    }
}

PS: আমি সমান্তরাল এক্সটেনশান লাইব্রেরি চেষ্টা করে দেখতে চেয়েছিলাম। এটা সহজ.

এবং নিয়ন্ত্রণ প্রবাহ হিসাবে OutOfMemoryException ব্যবহার করা ঠিক ভুল অনুভব করে।

সম্পাদনা

ঠিক আছে, মনে হয় এটি এখনও ভোট আকর্ষণ করে। সুতরাং আমি জিসি.কিপএলাইভ () সমস্যাটি স্থির করেছি। এবং এটি সি # 4 দিয়ে চালানোর জন্য পরিবর্তন করে।

এবং আমার সমর্থন শর্তাদি পরিষ্কার করতে: সমর্থনটি কেবল ২৮ / ফেব্রুয়ারী / ২০১০ এ উপলব্ধ। দয়া করে কেবলমাত্র সেই দিনটিতে সমর্থন অনুরোধ করতে একটি টাইম মেশিন ব্যবহার করুন।

সম্পাদনা 2 সর্বদা হিসাবে, জিসি মেমরি পরিচালনার ক্ষেত্রে আমার চেয়ে আরও ভাল কাজ করে; এটি করার ক্ষেত্রে পূর্বের যেকোনো প্রচেষ্টা ব্যর্থ হওয়ার জন্য ডومমড হয়েছিল।


120
এই শেষ কনসোল। রাইটলাইন আমাকে সত্যই শক্ত করে হাসতে বাধ্য করেছিল made আমি মনে করি আপনার CommonlyAcceptedCosmologicTheoriesWrongExceptionপরিবর্তে একটি নিক্ষেপ করা উচিত ।
আর মার্টিনহো ফার্নান্দেস

17
এটিকে স্বীকৃত হিসাবে চিহ্নিত করার অর্থ কি @ কাই @ লিগোস দ্বারা নির্ধারিত শর্তাদি গ্রহণ করে?
কেবি।

3
সেটিং reserveSomeRam = null;আসলে কিছুই সম্পাদন করে না।
ডিভিনবি 31'10

4
@ দেবিনব দয়া করে ব্যাখ্যা করবেন? দেখে মনে হচ্ছে এটি এটি আগে বরাদ্দ করা বাইটগুলি মুক্ত করছে যাতে জিসি Collect()এটি করতে পারে। কেন এটি কিছু সম্পাদন করে না?
পুরাণ

3
GuidCollisionDetector। নামটির সম্ভাবনা রয়েছে
ইউফুক হ্যাকোওলুলারি

226

এটি কয়েক ঘন্টা ধরে চলবে। ধরে নিলে এটি 1 গিগাহার্জ এ লুপ করে (যা এটি হবে না - এটি এর চেয়ে অনেক ধীর হবে), এটি 10790283070806014188970 বছর ধরে চলবে। যা মহাবিশ্বের বয়সের তুলনায় প্রায় 83 বিলিয়ন গুণ বেশি দীর্ঘ।

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


27
অভিশাপ - তাই হয়তো সার্টারাল থ্রেডগুলি জেনারেটস জেনারেট করা আরও ভাল ধারণা?
কাই

107
কোয়াড কোর প্রসেসরের 4 টি থ্রেড এটি মহাবিশ্বের যুগে 20 বিলিয়ন গুনে চালিয়ে দেবে - তাই হ্যাঁ, এটি অনেক সাহায্য করবে।
rjmunro

34
আমি সন্দেহ করি যে এটি একটি ট্রল, তবে অফ থেইন যে এটি না: থ্রেডগুলি যাদু নয়। যদি আপনি এক থ্রেডে প্রতি সেকেন্ডে বিলিয়ন ক্রিয়াকলাপ করতে পারেন, তবে দশটি থ্রেডে যাওয়ার অর্থ প্রতিটি একের হিসাবে বার বার 1/10 তম চলমান। প্রতিটি থ্রেড প্রতি সেকেন্ডে 100 এম অপারেশন করে; মোট সেকেন্ডে অপারেশন সংখ্যা বৃদ্ধি করা হয় না। প্রতি সেকেন্ডে অপারেশনের সংখ্যা বাড়ানোর উপায়টি আরও বেশি কম্পিউটার কেনা। মনে করুন আপনি আরও এক বিলিয়ন কম্পিউটার কিনেছেন। এটি কেবল 10790283070806 বছর গ্রহণে সমস্যা হ্রাস পাবে, যা এখনও চার ঘণ্টারও বেশি।
এরিক লিপার্ট

10
আমি মনে করি rjmunro ধরে নিচ্ছে যে প্রতিটি থ্রেড একটি পৃথক কোর চলবে; 83 বিলিয়ন ইউনিভার্স / 4 কোর প্রায় 20 বিলিয়ন মহাবিশ্বের সমান। ইন্টেল স্টক কেনার সময়!
ডোর হাই আর্চ

4
@ এরিক ৮৩ বিলিয়ন প্রসেসরের অর্থ হ'ল মহাবিশ্ব এখন পর্যন্ত কতটা সময় কাটিয়েছে তা আপনি এটি করতে সক্ষম হবেন। সুতরাং এমনকি যে প্রায় যথেষ্ট না।
rjmunro

170

একটি জিইউইডি তাত্ত্বিকভাবে অ-অনন্য। আপনার প্রমাণ এখানে:

  • জিইউইডি একটি 128 বিট নম্বর
  • আপনি পুরানো জিইউডিগুলিকে পুনরায় ব্যবহার না করে 2 ^ 128 + 1 বা তার বেশি জিইউইডি তৈরি করতে পারবেন না

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

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


44
কবুতরহোলের নীতিমালা উদ্ধার!
yfeldblum

22
সূর্য শীতল মন্তব্য জন্য +1। এনক্রিপশন কী> 256 বিটগুলির অর্থহীনতা সম্পর্কে কোথাও একটি আকর্ষণীয় মন্তব্য ছিল। সমস্ত সম্ভাব্য মূল্যের উপর পুনরাবৃত্তি করতে সমগ্র মহাবিশ্বের ধারণার চেয়ে বেশি শক্তি লাগবে। সিপিইউতে কিছুটা টগল করার জন্য একটি অল্প পরিমাণ শক্তি প্রয়োজন (এটিই উত্তাপটি উত্পন্ন করে) যা 2 ^ 256 বার গুণিত করার পরে মহাবিশ্বে সঞ্চিত শক্তির চেয়ে বেশি পরিমাণে বড় সংখ্যা, E = এমসি 2 ব্যবহার করে মহাবিশ্বের ভরগুলির প্রয়োজন হবে 2 ^ 227 কেজি, আমাদের সূর্য 2 ^ 101 কেজি তাই 2 ^ 126 সূর্য!
স্কিজেড

31
@ স্কিজ: এটি কেবল নিষ্ঠুর বাহিনীর আক্রমণে সত্য। যখন কোনও এনক্রিপশন স্কিমটি "ভাঙা" হয়, তার অর্থ এটি হ'ল ব্রুটের চেয়ে কম সময়ে সমাধান করা যায় তবে সমাধানের সময়টি মূল আকারের সাথে আনুপাতিক থাকে remains
স্টিভেন সুদিত

1
@ স্টিভেনসডিট: মূল আকারের অনুপাতের আনুপাতিক (যদি পি == এনপি না থাকে)
ইহার বারী

1
@ অরঙ্গুর বিটগুলিতে পরিমাপ করা মূল আকারের আনুপাতিক।
স্টিভেন সুদিত

137

অবশ্যই জিইউইডিগুলি সংঘর্ষে আসতে পারে। যেহেতু জিইউইডিগুলি 128-বিট, কেবল 2^128 + 1সেগুলি তৈরি করে এবং কবুতরের নীতি অনুসারে একটি সংঘর্ষ হতে হবে।

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

আপনি যদি nএলোমেলোভাবে জিইউইডিগুলির ক্রম উত্পন্ন করেন তবে কমপক্ষে একটি সংঘর্ষের সম্ভাবনা প্রায় p(n) = 1 - exp(-n^2 / 2 * 2^128)(এটি জন্মদিনের সম্ভাব্য সংখ্যা সহ জন্মদিনের সমস্যা2^128 )।

   n     p(n)
2^30 1.69e-21
2^40 1.77e-15
2^50 1.86e-10
2^60 1.95e-03

এই সংখ্যাগুলি কংক্রিট করার জন্য 2^60 = 1.15e+18,। সুতরাং, আপনি যদি প্রতি সেকেন্ডে এক বিলিয়ন জিইউইডি উত্পাদন করেন তবে 2^60এলোমেলো জিইউইডিগুলি তৈরি করতে আপনাকে 36 বছর সময় লাগবে এবং তারপরেও আপনার সংঘর্ষের সম্ভাবনা এখনও রয়েছে 1.95e-03। আপনি পরবর্তী 36 বছর ধরে কোনও সংঘর্ষের চেয়ে আপনার জীবনের কোনও এক সময় ( 4.76e-03) খুন হওয়ার সম্ভাবনা বেশি । শুভকামনা।


239
যদি আপনি আপনার জীবনের কোনও পর্যায়ে খুন হন, তবে সমস্যাগুলি কি এটির শেষেই হবে।
মাইকেল মায়ার্স

25
@ এমমিয়ার্স: দুর্দান্ত পয়েন্ট। তার মানে এই যে আমার এখনই খুন হওয়ার সম্ভাবনা অযৌক্তিকভাবে কম, কারণ এটি আমার জীবনের শেষ নয় life ওহ, অপেক্ষা করুন ...
স্টিভেন সুদিত

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

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

17
আপনি ধরে নিচ্ছেন যে খুন হওয়ার সম্ভাবনা সমস্ত মানুষের পক্ষে একটি ধ্রুবক। তবে স্পষ্টতই যারা ফোরামে পোস্টগুলিতে স্নাইড মন্তব্য লিখেন তারা এমন ধরণের লোক যারা সাধারণ ব্যক্তির চেয়ে খুন হওয়ার সম্ভাবনা বেশি।
জে

61

যদি আপনি স্বতন্ত্রতা সম্পর্কে উদ্বিগ্ন থাকেন তবে আপনি সর্বদা নতুন জিআইডিগুলি কিনতে পারেন যাতে আপনি আপনার পুরানোগুলি ফেলে দিতে পারেন। আপনি চাইলে আমি কিছুটা ইবে রাখব।


13
শীতল - 0 থেকে (2 ^ 128) -1 থেকে সম্পূর্ণ সেটটির জন্য কত?
স্টিভ 314

23
বিক্রয়ের জন্য, প্রতি 1 কে জিইউইডি প্রতি 0.01 ডলার। আপনি যদি পরবর্তী minutes০ মিনিটে অর্ডার করেন তবে আমি কিছু বাঁশযুক্ত বাতাসের ছোঁড়া ফেলে দেব।
ctacke

7
আমার সেটটি আরও একচেটিয়া এবং উচ্চ মানের। তারা ডাবল চেক এবং যাচাই করা হয়েছে যা তাদের প্রতি জিইউডিতে UID 1 মূল্য দেয়। আপনি যদি একসাথে সম্পূর্ণ বিনিয়োগ করতে না চান তবে আপনি তাদের ব্যাচগুলিতেও কিনতে পারেন। যদিও প্রতি ব্যাচে আমাকে অতিরিক্ত 10 ডলার নিতে হবে।
টমাস

3
আমি আপনাকে একটি মাসিক পরিকল্পনা প্রস্তুত করব এবং সঠিক দামের জন্য আপনাকে সীমাহীন গাইড দেব। Guys এই ছেলেরা আপনাকে কেলেঙ্কারী করার চেষ্টা করছে এবং আপনাকে অতিরিক্ত মূল্যের গাইড বিক্রি করবে। আমি আপনাকে চীনে তৈরি মানের গাইড বিক্রি করব!
এরোকএম

47

ব্যক্তিগতভাবে, আমি মনে করি দুটি জিইউইডি সংঘর্ষের সময় "বিগ ব্যাং" হয়েছিল।


4
শুধু মনে রাখবেন এটি করতে একটি "বিশেষ" ধরণের প্রোগ্রামার লাগে ...
অ্যান্টনি ল্যামবার্ট

আমি আপনার তত্ত্বটি আপনার যুক্তি শুনতে চাই। আমি মনে করি আমরা এর ভিত্তিতে একটি নতুন ধর্ম শুরু করতে পারি এবং টি.ক্রুজকে নিয়োগ দেব!
এরোকএম

@ErocM; "ব্রেন কসমোলজি" ( en.wikedia.org/wiki/Bane_cosmology ) এবং "মেমব্রেন (এম-থিওরি)" ( এন.ইউইউইকিপিডিয়া / উইকি / মিম্ব্রেন_ ( এম- থিওরী ) ) দেখুন। ধারণাটি হ'ল যদি দুটি ব্রাঞ্চ স্পর্শ করে একটি নতুন মহাবিশ্ব তৈরি হয়। অতএব, আপনি অনুমান করতে পারেন যে দুটি জিইউইডি যদি স্পর্শ করে তবে এইভাবে একটি নতুন মহাবিশ্ব তৈরি হবে।
এএমিসিকো

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

42

কোয়ান্টাম বোগোসর্ট অ্যালগরিদমের বৈকল্পিকের সাথে আপনি ও (1) সময়ে এটি দেখাতে পারেন ।

Guid g1 = Guid.NewGuid();
Guid g2 = Guid.NewGuid();
if(g1 != g2) Universe.Current.Destroy();

21
ডাস্ট্রয় () কল করার সময় আমি একটি ব্যতিক্রম পাচ্ছি। পাঠ্যের ভিত্তিতে, আমি মনে করি বর্তমান মহাবিশ্বকে ধ্বংস করতে আমার কম্পিউটারে প্রয়োজনীয় হার্ডওয়্যার নেই la আপনি কি জানেন যে আমি এটি পেতে সক্ষম হতে পারে?
স্টিভেন সুদিত

11
@ স্টিভেন: না, কিছু এপিআই জনসাধারণের কাছে কী খারাপ লাগবে তা সম্পর্কে খুব চিন্তিত হয়ে পড়ে এবং "সুরক্ষার কারণে" সর্বদা ব্যর্থ হওয়ার নির্দেশ দেয়। আপনি পদ্ধতি এর উৎস তাকান ঠিক যে এক লাইন আছে: throw new MundaneHardwareException();। যাইহোক, আমি শুনেছি সিইআরএন-তে ছেলেরা একরকম বিগ হ্যাড্রন থিংয়ের সাথে আছে যা সম্ভবত কৌশলটি করতে পারে ...
আর মার্টিনহো ফার্নান্দিস

7
@ মার্টিনহো: আহ, ঠিক আছে। আমি প্রতিস্থাপন মধ্যে সন্ধান করব Universe.Current.Destroy()সঙ্গে Cern.Lhc.DestroyThisUniverse()
স্টিভেন সুদিত 20'10

61
আমি জানতাম যে হাসকেলে আমি প্রোগ্রাম করার একটি কারণ ছিল। এই পার্শ্ব প্রতিক্রিয়াগুলি ভীতিজনক হয়ে উঠছে।
এডওয়ার্ড কেএমইটিটি

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

28

দুটি জিইউইডি খুব সম্ভবত অনন্য (সমান নয়)।

এই এসও এন্ট্রি , এবং উইকিপিডিয়া থেকে দেখুন

প্রতিটি উত্পন্ন জিইউইডি অনন্য হওয়ার গ্যারান্টিযুক্ত না হলেও, অনন্য কীগুলির মোট সংখ্যা (2 ^ 128 বা 3.4 × 10 ^ 38) এত বড় যে একই সংখ্যার দ্বিগুণ উত্পন্ন হওয়ার সম্ভাবনা খুব কম। উদাহরণস্বরূপ, পর্যবেক্ষণযোগ্য মহাবিশ্ব বিবেচনা করুন, যার মধ্যে প্রায় 5 × 10 ^ 22 তারা রয়েছে; প্রতিটি তারার তখন 6.8 × 10 ^ 15 সর্বজনীনভাবে অনন্য জিআইডি থাকতে পারে।

সুতরাং সম্ভবত আপনাকে আরও অনেক বিলিয়ন বছরের জন্য অপেক্ষা করতে হবে, এবং আশা করি যে আপনি মহাবিশ্বের সামনে একটি আঘাত করেছিলেন যেহেতু আমরা জানি যে এটি শেষ হয়ে গেছে।


সুতরাং 2 ^ 128 সম্ভব গাইডের সঠিক সংখ্যা নয়?
কাই

21
এটাই. আপনি কেন 2 ^ 128 একটি ছোট সংখ্যা বলে মনে করেন?
jrockway

হ্যাঁ, 2 ^ 128 সম্ভাব্য গাইডের সঠিক সংখ্যা।
গ্রাভিটন

3
এটি একটি সংখ্যার নরক। $ irb >> 2**128 => 340282366920938463463374607431768211456
adamJLev

45
@ ইনফিনিটি - এমনকি আপনার?
অস্টিন রিচার্ডসন

27

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

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

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

সমস্ত ব্যবহারিক উদ্দেশ্যে জিইউইডিগুলি সর্বজনীনভাবে অনন্য।

"ওল্ড নিউ থিং" ব্লগে এমএস জিইউডির একটি দুর্দান্ত বর্ণনা রয়েছে


3
ভার্চুয়ালাইজেশন ব্যবহার করার সময় প্রকৃতপক্ষে তা সম্ভব। আপনি এবং নকল গাইড পেতে পারেন।
গোরান

8
রেমন্ড ম্যাক অ্যাড্রেস অংশে পুরানো, যদিও মাইক্রোসফ্ট এগুলি আর ব্যবহার করে না। ভি 1 এবং ভি 4 গাইডের মধ্যে পার্থক্যের জন্য en.wikedia.org/wiki/GUID# অ্যালগরিদম দেখুন ।
মাইকেল স্টাম

1
এই এখন আর তা নেই। বর্তমান ভি 5 স্কিমটি খাঁটি সিউডোরডম সদ্ব্যবহারের মাত্র 128 বিট।
এডওয়ার্ড কেএমইটিটি

মজার বিষয় আপনি আমার থেকে এক মাস পরে সমস্ত কিছু কীভাবে বর্ণনা করেন এবং আপনি 16 পয়েন্ট পান এবং এখনও আমার 0 আছে?
অ্যান্থনি ল্যামবার্ট

1
ইয়া টনি, এর সাথে কিছু বিশ্রী আছে। ফিরে যখন আমি পোস্টটির উত্তর দিয়েছিলাম, কেবলমাত্র 3 বা 4 টি উত্তর ছিল, এবং আমি আপনাকে দেখে মনে করি নি ... যদি আমি থাকি, তবে আমি কেবল এটি উত্সাহিত করেছি। আমি ইতিমধ্যে প্রশ্নের উত্তর দিই না যখন ইতিমধ্যে অন্যান্য উত্তর ইতিমধ্যে এটি যথেষ্ট ভাল কভার করে (যে কারণে সম্ভবত আমার তুলনায় কম কম রেপ রয়েছে)।
স্টিফেন এম। রেড

23

এখানে একটি নিফটি সামান্য এক্সটেনশন পদ্ধতি যা আপনি যদি আপনার কোডের অনেক জায়গায় গাইডের স্বতন্ত্রতা পরীক্ষা করতে চান তবে আপনি ব্যবহার করতে পারেন।

internal static class GuidExt
{
    public static bool IsUnique(this Guid guid)
    {
        while (guid != Guid.NewGuid())
        { }
        return false;
    }
}

এটিকে কল করতে, যখনই আপনি একটি নতুন নির্দেশিকা তৈরি করেন কেবল কেবল গাইড.ইউউনিককে কল করুন ...

Guid g = Guid.NewGuid();
if (!g.IsUnique())
{
    throw new GuidIsNotUniqueException();
}

... হেক, আমি এটি প্রথমবারের মতো ঠিক হয়ে গেছে তা নিশ্চিত করার জন্য এটিতে দু'বার কল করার পরামর্শ দিয়েছি।


2
এটি কীভাবে নিশ্চিত করে যে this guidএটি পৃথিবীর আর কোথাও তৈরি হয়নি? : p হেক আমাদের একটি ওয়ার্ল্ড গাইড পুল দরকার। :)
নওফাল

19

2 ^ 128 গণনা - উচ্চাভিলাষী।

কল্পনা করা যাক আমরা প্রতি মেশিনে 2 ^ 32 আইডি গণনা করতে পারি - এটি উচ্চাকাঙ্ক্ষী নয়, যেহেতু এটি প্রতি সেকেন্ডে 4.3 বিলিয়নও নয়। সেই কাজে 2 ^ 32 মেশিন উত্সর্গ করতে দিন Le তদ্ব্যতীত, প্রতিটিটিতে একই সংস্থান উত্সর্গ করতে 2। 32 সভ্যতা পেতে দিন।

এখনও অবধি, আমরা প্রতি সেকেন্ডে 2 ^ 96 আইডি গণনা করতে পারি, যার অর্থ আমরা 2 ^ 32 সেকেন্ডের জন্য গণনা করব (136 বছরের বেশি সময়)।

এখন, আমাদের কেবলমাত্র 4,294,967,296 মেশিনকে 4,294,967,296 মেশিনের জন্য 4,294,967,296 মেশিনের প্রতিদান দেওয়া দরকার, প্রতিটি মেশিন প্রতি সেকেন্ডে 4,294,967,296 আইডি গণনা করতে সক্ষম, পুরোপুরি পরবর্তী 136 বছর বা তার জন্য এই কাজের জন্য - আমি পরামর্শ দিচ্ছি যে এই মুহুর্তে আমরা এই প্রয়োজনীয় কাজটি শুরু করব; -)


17

ঠিক আছে যদি 83 বিলিয়ন বছরের চলমান সময় আপনাকে ভয় না দেয় তবে মনে করুন যে আপনার কোনও নকল আছে কিনা তা পরীক্ষা করার জন্য আপনার উত্পন্ন জিইউইডিগুলি কোথাও সংরক্ষণ করতে হবে; 2 ^ 128 16-বাইট সংখ্যাগুলি স্টোর করার জন্য আপনাকে কেবল 4951760157141521099596496896 টেরাবাইট র‌্যাম আপফ্রন্টের জন্য বরাদ্দ করতে হবে, সুতরাং আপনার কাছে এমন একটি কম্পিউটার রয়েছে যা কল্পনা করে যে সমস্তটি ফিট করতে পারে এবং আপনি কোনও একসাথে 10 গ্রামে টেরাবাইট ডিআইএমএম কিনতে একটি জায়গা খুঁজে পাবেন, তারা মিলিত হবে 8 টিরও বেশি জনসাধারণের ওজন নির্ধারণ করুন, আপনি এমনকি "রান" চাপার আগে আপনি এটি গুরুত্বের সাথে বর্তমান কক্ষপথ থেকে সরিয়ে নিতে পারেন। আবার ভাব!


12
for(begin; begin<end; begin)
    Console.WriteLine(System.Guid.NewGuid().ToString());

আপনি বৃদ্ধি করছেন না beginতাই শর্তটি begin < endসর্বদা সত্য।


1
না - কারণ আমি বড়িন্টের পুনরাবৃত্তি করতে পারি না
কাই

3
340282366920938463463374607431768211456 বার লুপিংয়ের বিপরীতে তিনি চিরতরে লুপ করেন কিনা তা কি সত্যিই গুরুত্বপূর্ণ?
জে

3
তাহলে ... আপনি কি বরং 340282366920938463463374607431768211456 বার বা চিরতরে!?!?!? পাঞ্চ হয়ে যাবেন?
এরোকএম

আসলে এই প্রশ্নের উত্তর কি আসলে! এবং কোনও ভোট নেই: পি
নওফাল


9

সম্ভবত আপনার বিশ্বাস করার কারণ আছে যে গাইড তৈরির জন্য অ্যালগরিদম সত্যিকারের এলোমেলো সংখ্যা তৈরি করছে না, তবে বাস্তবে এটি << 2 ^ 128 এর সাথে সাইক্লিং করছে।

উদাহরণস্বরূপ, জিইউডিগুলি অর্জন করতে ব্যবহৃত আরএফসি 4122 পদ্ধতি যা কিছু বিটের মান স্থির করে।

সাইক্লিংয়ের প্রমাণ সময়ের সম্ভাব্য আকারের উপর নির্ভর করে।

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

চূড়ান্তভাবে যদি সংঘর্ষের মধ্যে সর্বাধিক সময়কাল পর্যাপ্ত পরিমাণে থাকে (এবং আগে থেকে জানা যায় না) যে কোনও পদ্ধতি কেবলমাত্র একটি সম্ভাবনা অর্জন করতে চলেছে যে এটির উপস্থিতি থাকলে সংঘর্ষটি পাওয়া যাবে।

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

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

অবশ্যই, আপনি যদি কেবল প্রমাণ করতে চান যে গাইডগুলি সংঘর্ষ করতে পারে, তবে একটি প্রোগ্রামের নয়, একটি গাণিতিক প্রমাণই উত্তর।


8

আমি বুঝতে পারছি না কেন কেউ আপনার গ্রাফিক্স কার্ড আপগ্রেড করার কথা বলেছে না ... অবশ্যই যদি আপনি একটি উচ্চ-এনভিআইডিএ কোয়াড্রো এফএক্স 4800 বা কিছু পেয়ে থাকেন (192 সিউডিএ কোর) এটি আরও দ্রুত চলে যাবে ...

অবশ্যই আপনি যদি কয়েকটি এনভিআইডিএ কাদ্রো প্ল্লেক্স 2200 এস 4 (সামান্য 960 সিউডিএ কোরে) সরবরাহ করতে পারতেন তবে এই গণনাটি হবে সত্যিই চিৎকার করবে। সম্ভবত এনভিআইডিএ আপনাকে পিআর স্টান্ট হিসাবে "প্রযুক্তি প্রদর্শনের" জন্য আপনাকে কিছু fewণ দিতে ইচ্ছুক হবে?

অবশ্যই তারা এই historic তিহাসিক গণনার অংশ হতে চাই ...


হুমম্ম ..... আমি আমাদের 10,000 নোড গ্রিডে এটি চালাতে পারি।
অ্যান্থনি ল্যামবার্ট

8

তবে আপনার কি নিশ্চিত হতে হবে যে আপনার একটি সদৃশ আছে, বা কেবল কোনও সদৃশ থাকতে পারে সেদিকে খেয়াল রাখুন। একই জন্মদিনে আপনার দু'জন লোক রয়েছে তা নিশ্চিত হওয়ার জন্য আপনার 366 জনের দরকার (লিপ বছর গণনা করা হয়নি) need একই জন্মদিনে দু'জনের থাকার 50% এরও বেশি সুযোগ হওয়ার জন্য আপনার কেবল 23 জনের দরকার। এটাই জন্মদিনের সমস্যা

যদি আপনার কাছে 32 বিট থাকে তবে ডুপ্লিকেটের 50% এর চেয়ে বেশি সুযোগের জন্য আপনার কেবল 77,163 টি মান দরকার। চেষ্টা কর:

Random baseRandom = new Random(0);

int DuplicateIntegerTest(int interations)
{
    Random r = new Random(baseRandom.Next());
    int[] ints = new int[interations];
    for (int i = 0; i < ints.Length; i++)
    {
        ints[i] = r.Next();
    }
    Array.Sort(ints);
    for (int i = 1; i < ints.Length; i++)
    {
        if (ints[i] == ints[i - 1])
            return 1;
    }
    return 0;
}

void DoTest()
{
    baseRandom = new Random(0);
    int count = 0;
    int duplicates = 0;
    for (int i = 0; i < 1000; i++)
    {
        count++;
        duplicates += DuplicateIntegerTest(77163);
    }
    Console.WriteLine("{0} iterations had {1} with duplicates", count, duplicates);
}

1000 iterations had 737 with duplicates

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

  • সংঘর্ষের 1/1000 সম্ভাবনার জন্য 0.8 বিলিয়ন বিলিয়ন
  • সংঘর্ষের 50% সম্ভাবনার জন্য 21.7 বিলিয়ন বিলিয়ন
  • সংঘর্ষের 90% সম্ভাবনার জন্য 39.6 বিলিয়ন বিলিয়ন

প্রতি বছর প্রায় 1E14 ইমেল প্রেরণ করা হয়েছে তাই আপনার একই জিইউইডি সহ দুটি থাকার 90% সুযোগ পাওয়ার আগে এই স্তরে এটি প্রায় 400,000 বছর হবে তবে এটি আপনাকে কম্পিউটারের চালনার দরকার বলে বলার চেয়ে অনেক আলাদা is৩ বিলিয়ন মহাবিশ্বের বয়সের বার বা নকল খুঁজে পাওয়ার আগে সূর্য শীতল হয়ে যেত।


7

আপনি সব কি একটি প্রধান পয়েন্ট মিস করছেন না?

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

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

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

টনি


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

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

4
সমস্ত
জিইউইডি

ওপি সি # এর উল্লেখ করেছে, সুতরাং এটি উইন্ডোজ। এছাড়াও, ভি 4 জিইউডি কি উইন্ডোজ-কেবলমাত্র জিনিস?
স্টিভেন সুদিত

5
@ মার্টিনহো: আহ, তবে গাইডের জন্য মনোয়ের ইউনিট পরীক্ষার জন্য, গুডটেষ্ট.সি.-তে, একটি পদ্ধতি রয়েছে যা দুটি নতুন জিইউইডি তৈরি করে এবং তাদের সমতার জন্য পরীক্ষা করে, যদি তারা সমান হয় তবে ব্যর্থ হয়। মনো সফলভাবে নির্মিত হিসাবে, আমরা একেবারে নিশ্চিত হতে পারি যে এর জিইউডিগুলি অনন্য! :-)
স্টিভেন সুদিত 20'10

6

আপনি জিইউইডিগুলি হ্যাশ করতে পারেন। এইভাবে, আপনার খুব দ্রুত ফলাফল পাওয়া উচিত।

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


6

জিইউইডিগুলি 124 বিট কারণ 4 বিট সংস্করণ নম্বরটি ধারণ করে।


এটিকে মন্তব্য হিসাবে যুক্ত না করার কারণ: এটির কথা কেউ উল্লেখ করেনি এবং আমি কারও কাছে এটি জানা উচিত তা আমি জানি না :) :)
বেহরোজ

হুরুরআয়ে আমি এটি করেছি some আমি লিখেছি এমন কিছু "বাস্তব" অ্যাপে আমি। 260 কেজ সারিগুলির সাথে একটি টেবিলের মধ্যে গাইডের সংঘর্ষ পেয়েছি। (এমএসএসকিউএল ২০০৮ আর 2 এক্সপ্রেস)।
বেহরোজ

6
  1. নিউ ইয়র্ক সিটির ক্রায়োজেনিক্স ল্যাবে যান।
  2. 1990 বছর (মোটামুটিভাবে) নিজেকে নিথর করুন।
  3. প্ল্যানেট এক্সপ্রেসে চাকরী পান।
  4. একদম নতুন সিপিইউ কিনুন। একটি কম্পিউটার তৈরি করুন, প্রোগ্রামটি চালান এবং একটি নিরাপদ জায়গায় এটি সিওডো-চিরস্থায়ী গতি মেশিনের সাথে ডুমসডে মেশিনের মতো রাখুন।
  5. টাইম মেশিন আবিষ্কার না হওয়া পর্যন্ত অপেক্ষা করুন।
  6. সময় মেশিন ব্যবহার করে ভবিষ্যতে ঝাঁপুন। আপনি যদি 1YHz 128 বিট সিপিইউ কিনে থাকেন তবে যান3,938,453,320 days 20 hours 15 minutes 38 seconds 463 ms 463 μs 374 ns 607 ps আপনি যখন প্রোগ্রামটি চালাতে শুরু করলেন তখন ।
  7. ...?
  8. লাভ !!!

... 10,783,127আপনার 1YHz সিপিইউ থাকলেও এটি কমপক্ষে কয়েক বছর সময় নেয় 1,000,000,000,000,000(বা 1,125,899,906,842,624আপনি যদি বাইনারি উপসর্গ ব্যবহার করতে পছন্দ করেন) তবে 1GHz সিপিইউর থেকেও গতি বাড়বে ।

সুতরাং গণনা শেষ হওয়ার অপেক্ষা না করে, কবুতরগুলি খাওয়ানো ভাল হবে যা তাদের ঘর হারিয়েছে কারণ অন্যটি n কবুতরগুলি তাদের বাড়ি নিয়েছিল। :(

অথবা, আপনি 128-বিট কোয়ান্টাম কম্পিউটার আবিষ্কার না হওয়া পর্যন্ত অপেক্ষা করতে পারেন। তারপরে আপনি প্রমাণ করতে পারেন যে জিইউডি অদ্বিতীয় নয়, আপনার প্রোগ্রামটি যথাযথ সময়ে (সম্ভবত) ব্যবহার করে।


আমি এই উত্তরে একটি সুপার হিরো রেফারেন্সের জন্য অপেক্ষা করছিলাম - পোস্টার দিয়ে ব্যর্থ: পি - দুর্দান্ত কিছু কম নয়।
ইব্রার মমতাজ

4

আপনি কি begin = begin + new BigInteger((long)1)++ শুরু করার জায়গায় চেষ্টা করেছেন ?


2
সত্যই প্রশ্নের উত্তরটির উত্তরে কেউ ভোট
দেয়নি

4

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

2 ^ 128 ইউআইডি সহ, সমস্ত ইউআইডি থেকে রান আউট হওয়ার আগে কেবল 18 মাস * লগ 2 (2 ^ 128) 192 = 192 বছর লাগবে।

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

তবে যেহেতু আমরা অবশ্যই ২০১২ সালের শেষের দিকে এগুলি শেষ করব না, তাই সমস্যাটি সম্পর্কে চিন্তিত হওয়ার জন্য আমরা অন্যান্য প্রজাতির কাছে রেখে দেব।


3

জিইউইডি উত্পাদনকারী কোডে একটি বাগের প্রতিক্রিয়া সংঘর্ষ তৈরির অ্যালগরিদমের প্রতিক্রিয়াগুলির চেয়ে অনেক বেশি। জিইউইডিগুলি পরীক্ষা করার জন্য আপনার কোডের কোনও বাগের প্রতিক্রিয়া আরও বেশি। ছেড়ে দেত্তয়া.


2

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

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

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

পিএস: যদি লক্ষ্যটি হ'ল বিভিন্ন মানের x সংখ্যা উত্পন্ন করা হয় তবে এই প্রস্থের একটি হ্যাশ টেবিল তৈরি করুন এবং কেবল হ্যাশ মানটি পরীক্ষা করুন।


2

এখানে বনফায়ারে পি ** গুলি না করা, তবে এটি আসলে ঘটে এবং হ্যাঁ, আপনি এই লোকটিকে যে রসিকতা দিচ্ছেন তা আমি বুঝতে পেরেছি, তবে জিইউইডি কেবল নীতিগতভাবেই অনন্য, আমি এই থ্রেডে ঝাঁপিয়ে পড়েছি কারণ একটি বাগ রয়েছে ডাব্লুপি em এমুলেটর যার অর্থ এটি প্রতিবার বুট হয়ে গেলে সেম গিউডিটিকে প্রথমবার বলা হয়! সুতরাং, তাত্ত্বিকভাবে যেখানে আপনার বিরোধ থাকতে পারে না, যদি সেখানে জিইউআই বলে উত্পন্ন সমস্যা তৈরি হয় তবে আপনি নকল পেতে পারেন

http://forums.create.msdn.com/forums/p/92086/597310.aspx#597310


1

যেহেতু গাইড প্রজন্মের অংশটি বর্তমান মেশিনের সময়ের উপর নির্ভরশীল, তাই আমার নকল গাইড পাওয়ার তত্ত্বটি হ'ল:

  1. উইন্ডোজ একটি পরিষ্কার ইনস্টলেশন সঞ্চালন
  2. উইন্ডোজ বুট আপ হওয়ার সাথে সাথে 2010-01-01 12:00:00 তে সময় পুনরায় সেট করা একটি স্টার্টআপ স্ক্রিপ্ট তৈরি করুন।
  3. প্রারম্ভিক স্ক্রিপ্টের ঠিক পরে, এটি আপনার অ্যাপ্লিকেশনটিকে নির্দেশিকা তৈরি করতে ট্রিগার করে।
  4. এই উইন্ডোজ ইনস্টলেশনটি ক্লোন করুন, যাতে আপনি পরবর্তী বুট-আপগুলিতে যে কোনও সূক্ষ্ম পার্থক্য অস্বীকার করতে পারেন।
  5. এই চিত্রটি দিয়ে হার্ড ড্রাইভটিকে পুনরায় চিত্রিত করুন এবং কয়েকবার মেশিনটি বুট-আপ করুন।

0

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


0

এখানেও একটি সমাধান রয়েছে:

int main()
{
  QUuid uuid;
  while ( (uuid = QUuid::createUuid()) != QUuid::createUuid() ) { }
  std::cout << "Aha! I've found one! " << qPrintable( uuid.toString() ) << std::endl;
}

দ্রষ্টব্য: কিউটি দরকার, তবে আমি গ্যারান্টি দিচ্ছি যে আপনি যদি এটি দীর্ঘকাল চালাতে দেন তবে এটির একটি খুঁজে পেতে পারে।

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


0

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

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