View Full Version : تولید اعداد رندوم
h_mohamadi
دوشنبه 29 تیر 1394, 12:56 عصر
سلام دوستان
من به یک مشکلی خوردم و خیلی هم جستجو کردم و به نتیجه نرسیدم
مشکل من این است که من می خواهم نرم افزار من یک عدد 5 رقمی رندوم تولید کند و پس از تولید آن به آن عدد رندوم به تعداد داده شده به آن عدد اضافه کند و تمام شود
مثلا عدد رندوم 25471 به آن تعداد 5 تا اضافه کن و اعداد تولید شده 24571 و 24572 و 24573 و 24574 و 24575 است و در دیتابیس ذخیره می شه
حالا من می خواهم اینها یکتا باشد
برای دفعه بعدی که می خواهد عدد رندوم بدهد چک کند که تکراری نباشد و تا تعداد سریالی که من بهش می دهم خالی باشد.
ممنون می شوم به من راهنمایی کنید که بتوانم مشکلم را حل کنم و در آینده که دیتابیسم سنگین میشه به مشکل کندی سرعت نخورم
سپاس فراوان
یوسف زالی
دوشنبه 29 تیر 1394, 16:35 عصر
سلام
از زدن پست فاقد محتوا پرهیز کنید، در غیر اینصورت جریمه می شوید
روش شما غلطه و در طولانی مدت بیچاره کننده.
یکی از روشها اینه که شما می دونی ماکزیمم تعداد درخواستی مثلا ده تاست، اعداد رندوم رو با مضربی از ده می گیرید.
مثلا اگر همیشه اعداد پنج رقمی هستند، شما باید تمام اعداد چهار رقمی رو بنویسید، اونها رو "بر" بزنید، و در دی بی ذخیره کنید.
هنگامی که سری جدید نیاز دارید، اولین عدد استفاده نشده رو از دی بی مکش می کنید، و با ضرب کردنش در ده، کارتون رو انجام می دید.
مثال:
اعداد بر زده شده:
1043
9812
5432
6670
.
.
سری جدید:
1043 * 10 = 10430
10430
10431
10432
10433
.
.
این طوری با روشی سریع، مطمئن و البته بدون همپوشانی کارتون راه می افته.
موفق باشید.
h_mohamadi
سه شنبه 30 تیر 1394, 10:16 صبح
سلام
از زدن پست فاقد محتوا پرهیز کنید، در غیر اینصورت جریمه می شوید
روش شما غلطه و در طولانی مدت بیچاره کننده.
یکی از روشها اینه که شما می دونی ماکزیمم تعداد درخواستی مثلا ده تاست، اعداد رندوم رو با مضربی از ده می گیرید.
مثلا اگر همیشه اعداد پنج رقمی هستند، شما باید تمام اعداد چهار رقمی رو بنویسید، اونها رو "بر" بزنید، و در دی بی ذخیره کنید.
هنگامی که سری جدید نیاز دارید، اولین عدد استفاده نشده رو از دی بی مکش می کنید، و با ضرب کردنش در ده، کارتون رو انجام می دید.
مثال:
اعداد بر زده شده:
1043
9812
5432
6670
.
.
سری جدید:
1043 * 10 = 10430
10430
10431
10432
10433
.
.
این طوری با روشی سریع، مطمئن و البته بدون همپوشانی کارتون راه می افته.
موفق باشید.
ممنونم
ولی حداقل سفارش سریال من بالای 100 تا است و تا 1000 تا هم می رود یعنی آنوقت باید اعداد چند رقمی را در دی بی گرید نگه دارم؟؟؟
این که شما می فرمائید باید تمام اعداد چهار رقمی را بنویسم و بر بزنم یعنی از 1000 تا 9999 را در یک تیبل نگه دارم؟؟؟
یوسف زالی
سه شنبه 30 تیر 1394, 11:03 صبح
در این صورت یا باید اعداد بزرگتری رو انتخاب کنید یا روشتون رو اصلاح کنید، یا بعد از درج اونها رو سورت کنید یا ...
در روشی که گفته شد اعداد باید در جدول ذخیره شوند.
meysam_212
شنبه 03 مرداد 1394, 22:21 عصر
یعنی عدد رندم تو یه رنج خواص رو میخوایی؟ اگه این هست فکر کنم یه تابع تو یونیت math داشته باشه
اگه اعداد رو تو دیبی ذخیره میکنی فقط برای اینکه چک کنی تکراری نباشن، راه حل خوبی نیست
یوسف زالی
یک شنبه 04 مرداد 1394, 11:32 صبح
خب بفرمایید امروز اگر ده تا عدد بخوام، پس فردا بیام دوباره بیست تا عدد بخوام، از کجا بدونم چی نباید بردارم؟
اون چه که شما دارید می گید تابع RandomRange هست که اصلا ربطی به این خواسته نداره.
لطفا اگر اطلاع ندارید راهنمایی اشتباه هم نکنید.
meysam_212
دوشنبه 05 مرداد 1394, 11:42 صبح
خب بفرمایید امروز اگر ده تا عدد بخوام، پس فردا بیام دوباره بیست تا عدد بخوام، از کجا بدونم چی نباید بردارم؟
اون چه که شما دارید می گید تابع RandomRange هست که اصلا ربطی به این خواسته نداره.
لطفا اگر اطلاع ندارید راهنمایی اشتباه هم نکنید.
اگه نرم افزار تک کاربرست میتونی تو .ini یا .txt یا ... آخرین عدد تولید شده رو نگه داری و با روشی که You-See (http://barnamenevis.org/member.php?70247-You-See) گفت خودت دستی اعداد رو اضافه کنی، یا اینکه به حر حال این عددا رو یه جایی تو دیبی داره ذخیره میشه که اگه اینطور باشه دیگه لازم نیست یه جدول جدا براشون داشته باشی تا دیتابیس هم جامعیت خودش رو حفظ کنه، میتونی با Select بزرگترین عدد تولید شده رو پیدا کنی یا اینکه رندم بودن اگه مهمه برای برنامه میتونی با یه Select چک کنی که این عدد قبلا تولید نشده باشه، برای اینکار میتونی بسته به نیاز برنامه تابع یا SP تو دیتابیس بسازی.
یوسف زالی
دوشنبه 05 مرداد 1394, 11:56 صبح
عزیز من، ممکنه بین اعداد قبلی گپی به طول مورد نیاز وجود داشته باشه. اون وقت چی؟
در آینده که دیتابیسم سنگین میشه به مشکل کندی سرعت نخورم
فایل برای این کار؟؟
vBulletin® v4.2.5, Copyright ©2000-1404, Jelsoft Enterprises Ltd.