رفتن به مطلب

الگوریتم تولید اعداد غیر تکراری


مجید آرتا

ارسال‌های توصیه شده

به نام خدا

سلام

امیدوارم حالتون خوب باشه

دوستان اصرار داشتن که واسه این کار کوچیک یه کتابخونه نوشته بشه که فک نکنم کار درستی باشه

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

خب بنده خودم داشتم الگوریتمشو مینوشتم و سلیقه ای بود،دیدم یه الگوریتم خوب و جالب هست گفتم اینو واستون قرار بدم و استفاده کنید.

قبلن هم یک الگوریتم در این باره نوشته بودم ولی خب اون الگوریتم عدد قبل و بعد رو چک می کرد که آیا تکراری هست یا نه ، یعنی دو عدد بعد احتمال تکراری بودنش زیاده و الگوریتم مطمئنی نیست.

خب این الگوریتم ، الگوریتم خوبیه.

پروژشو قرار ندادم و خواستم خودتون یکم دست بکار بشین حداقل دستتون به منوی File - > New Project  عادت کنه

 

 

الگوریتم :

Sub ShuffleArray(arr() As Int)
   For i = arr.Length - 1 To 0 Step -1
      Dim j, k As Int
      j = Rnd(0, i + 1)
      k = arr(j)
      arr(j)= arr(i)
      arr(i) = k
   Next
End Sub

نمونه کد :

Sub generateBtn_Click
 lv.Clear
 Dim numbers(10) As Int
   For i = 0 To 9
      numbers(i) = i + 1
   Next
   ShuffleArray(numbers)
   For i = 0 To 9
      lv.AddSingleLine(numbers(i))
   Next
End Sub

lv  هم یک ListView  هستش.

سعی کنید الگوریتمو درک کنید و اگر دیدید واستون قابل درک نیست به همین شکل کلیشه وار استفاده کنید.

موفق باشید

AnswerCenter.IR

لینک ارسال
به اشتراک گذاری در سایت های دیگر

پروژه مربوط به الگوریتم بالا:

Random Bedone Tekrar.rar

لینک ارسال
به اشتراک گذاری در سایت های دیگر

استاد ارتا :gol:♥


سلام

سورس اقا مجید گویای همه چیز هست خداییش

دقیقا همین تابع استادو براتون کتابخونه کردم

یه ارایه از نوع اینت رو مقدار دهی میکنید، میریزید توش و بعد ازش استفاده میکنید...

lib

 

suorce

 

اینم عکس از نتیجه اش

post-2314-0-04177900-1455024495_thumb.pngpost-2314-0-22429000-1455024510_thumb.png

لینک ارسال
به اشتراک گذاری در سایت های دیگر

استاد ممنونم ولی گویا متوجه منظوره بنده نشدید

بنده میخوام از بیسن مثلا 20تا عدد بیا یه عدد برگردونه و بار دیگه که رویه دکمه زدم اون عددی که قبلا نشون داده رو نشون نده 

لینک ارسال
به اشتراک گذاری در سایت های دیگر

لینک ارسال
به اشتراک گذاری در سایت های دیگر

 

استاد آرتا این همشون میان به صورت آرایه برمیگردونن یعنی چندتا عدد من اینجوری میخوام

 

مثلا بیاد بین 0تا 20رو بگیره و یه عدد به صورت تصادفی نشون بده مثلا 18 و دفعه بعد که زدم دوباره بیاد یه عدد دیگه نشون بده به جز18 و الی آخر 

لینک ارسال
به اشتراک گذاری در سایت های دیگر

آخرش سکته رو می زنیم از دستت :دی

باشه فقط دندون رو جیگر بزار بنده یه الگوریتمی رو خودم واستون می نویسم قرار میدم.

لینک ارسال
به اشتراک گذاری در سایت های دیگر

بایگانی شده

این موضوع بایگانی و قفل شده و دیگر امکان ارسال پاسخ نیست.

  • کاربران آنلاین در این صفحه   0 کاربر

    • هیچ کاربر عضوی،در حال مشاهده این صفحه نیست.
×
×
  • اضافه کردن...