ورود

View Full Version : سوال: روش ایجاد کدهای 12 رقمی به تعداد بسیار بالا و بدون تکرار



tazarvmmr
چهارشنبه 14 تیر 1391, 18:38 عصر
سلام به همه
دنبال یک روشی برای ایجاد یکسری کدهای 12 رقمی هستم که میتونه متشکل از حروف لاتین و اعداد باشه، باید در هر بار اجرا 50000 کد تولید بشه و اینکار یک هفته یک بار انجام میشه. در بارهای بعدی هم کدهای تولید شده نباید با کدهایی که قبلا تولید شده یکسان باشه یعنی ابدا تکراری نباشه!
کسی تا حالا با این مسئله برخورد کرده که تجربه ای داشته باشه؟
در ضمن کدهای تولید شده باید قابلیت تشخیص کد واقعی از جعلی رو داشته باشند، یعنی در خودش یک رمز داشته باشه که نشون بده این کد تقلبی نیست.

داستانیه خدا وکیلی!!!!

maktoom
چهارشنبه 14 تیر 1391, 20:51 عصر
سلام
چیزی که به ذهنم میرسه اینه که: اعداد مورد نظر رو داخل یک آرایه ذخیره و محصور کنید. از بین اینها تعداد اعدادی که می خواید بصورت رندوم انتخاب و حذف کنید. در دفعات بعدی از داخل همین آرایه(که باید ذخیره شده باشه یا فقط حذفیاتش ذخیره شده باشه) انتخاب صورت بگیره و دوباره مقادیر انتخاب شده حذف بشن.

tazarvmmr
چهارشنبه 14 تیر 1391, 21:34 عصر
سلام
چیزی که به ذهنم میرسه اینه که: اعداد مورد نظر رو داخل یک آرایه ذخیره و محصور کنید. از بین اینها تعداد اعدادی که می خواید بصورت رندوم انتخاب و حذف کنید. در دفعات بعدی از داخل همین آرایه(که باید ذخیره شده باشه یا فقط حذفیاتش ذخیره شده باشه) انتخاب صورت بگیره و دوباره مقادیر انتخاب شده حذف بشن.

متوجه نشدم منظورتون چیه. یعنی به ازای هر رقم یک آرایه بگیریم که کل اعداد و حروف لاتین توش باشه و هر کدوم که استفاده شد حذفش کنم؟

یعنی 12 تا ارایه با 36 خانه برای رقم اول و همین آرایه برای رقم دوم و تا رقم دوازدهم؟

فکر کنم اینطوری نمیشه! برای اینکه به ازای هر خانه آرایه اول 11 تا آرایه دیگه برای بقیه اعداد لازم داریم!

شایدم من قاطی کردم! اگر ممکنه یکم توضیح بدید

ممنونم

maktoom
چهارشنبه 14 تیر 1391, 22:46 عصر
نه.
منظورم این بود که دقیقا همون کاری رو بکنید که کامپایلرها می کنند. توی زبانهای مختلف دلیل اینکه زمانیکه شما از اعداد رندوم استفاده می کنید در هر بار که دوباره برنامه ران بشه تکراریه اینه که میاد از یه مجموعه بطور ترتیبی انتخاب می کنه و اونو حذف می کنه میره بعدی.
و همونطور که می دونید می تونید با تغیرر seed این ترتیب انتخاب رو تغییر بدید.
پیشنهادم این بود که یک مجموعه خیلی بزرگ به اندازه ای که در نهایت بهش نیاز دارید بوجود بیارید و انتخاب رندومتون رو (برای کل عدد نه فقط یک رقم) از این مجموعه انجام بدید. هر عدد که انتخاب بشه از مجموعه هم حذف بشه.
بنظر مجموعه ایه که گفتم خیلی خیلی بزرگ خواهد بود.
راه دیگه که بنظرم میرسه اینه که میشه با حلقه های تو در تو(اینبار به اندازه ارقام عدد) چک کرد که آیا تا حالا این ترتیب از ارقام قبلا بوجود اومده یا نه. مشخصه که اینجا برعکس خواهد بود یعنی با پیشرفت زمان مجموعه خیلی خیلی بزرگ خواهد شد.

ولی مواظب باشید که حتما رندوم انتخاب کردن رو با ساعت سیستم تنظیم کنید که هر بار اجرا بشه مقدار متفاوت بهتون برگردونه.(روشهای رندوم بهتری در همین سایت قسمت ایجاد اعداد رندوم قبلا بحث شده مثل استفاده از مقادیر خانه های حافظه)