PDA

View Full Version : سوال: کد ی برای رندم بدون تکرار



omid.m7
شنبه 12 تیر 1389, 22:29 عصر
سلام یک کد میخواستم برای اینکه 9 تا عدد رو بصورت تکراری ایجاد کنه ولی تکراری نباشند؟ به نظر خود اگر بیاد عددا رو بریزه تو یک لیست باس بعد بیاد عدد بعدی رو با لیست باکس چک کنه که تکراری هست یانه!!! ***نظرتون چه*** :متفکر::متفکر:

r00tkit
شنبه 12 تیر 1389, 22:43 عصر
سلام یک کد میخواستم برای اینکه 9 تا عدد رو بصورت تکراری ایجاد کنه ولی تکراری نباشند؟


مگه Random Class چشه؟

omid.m7
شنبه 12 تیر 1389, 22:54 عصر
یعنی از بین اعداد 0 تا 9 رو رندوم پشت سرهم تا بتونم از اون برای قرار دادن عکس ها به صورت تصادفی کنار هم
مثلا برای بازی پازل که عکس ها رو بصورت تسادفی ایجاد میکنه ولی در حالت معمولی ممکنه یک عکی چند بار ایجاد بشه که خوب عکس نهایی از هم میپاشه دیگه !!!

arash020
یک شنبه 13 تیر 1389, 02:29 صبح
سلام دوست من
کافیه لازم رو خودت بده تا یه عدد بده .:تشویق:
من خودم همیشه از همین کد استف میکنم
حرف نداره . . .


Dim n As Integer = 20
Dim numbers(n - 1) As Integer
Dim rand As Random = New Random
For i As Integer = 0 To n - 1
Dim rNum As Integer
Dim duplicated As Boolean
Do
duplicated = False
rNum = rand.Next(1, n + 1)
For j As Integer = 0 To i - 1
If rNum = numbers(j) Then
duplicated = True
End If
Next
Loop While duplicated
numbers(i) = rNum
Next
For n = 1 To 19
MsgBox(numbers(n).ToString)
Next

nima898
یک شنبه 13 تیر 1389, 11:25 صبح
تو vb6 با نوشتن عبارت randomize timer میشد از تابع rnd استفاده کرد تو vb.net چیزی مشابه این نداره؟

ebrahimv
یک شنبه 13 تیر 1389, 13:18 عصر
الگريتم اين مشكل تو رو بلدم فقط بايد كدشو بنويسي
مثلا ميخواهيم 8 عدد تصادفي غير تكراري توليد كنيم
ابتدا 8 عدد تصادفي در بازه 0 تا 1 توليد ميكنيم تكراري باشه مشكلي نيست.
و آن ها را در يك آرايه مي نويسيم

مثلا اينا ميان
0.08 انديس 1 و 0.50 انديس 2 و 0.01 انديس 3 و 0.12 انديس 4 و 0.15 انديس 5 و 0.03 انديس 6 و 0.66 انديس 7 و 0.12 انديس 8

سپس آرايه را مرتب مي كنيم ولي بايد انديس ها را بايد به خواطر داشته باشيم
0.01 انديس 3 و 0.03 انديس 6 و 0.08 انديس 1 و 0.12 انديس 8 و 0.12 انديس 4 و 0.15 انديس 5و 0.50 انديس 2 و 0.66 انديس 7

حال انديس ها را به ترتيب بردار
3 و 6و 1 و8 و 4 و 5 و 2 و 7
ميبيني كه اعداد تصادفي است و امكان اين كه تكراري باشد نيست.
اين بهترين و بهينه ترين راه ممكن است.
روش هاي ديگري نيز وجود دارد كه اصلا بهينه نيست او امكان اين كه برنامه هنگ كنه هست.

nima898
دوشنبه 14 تیر 1389, 07:27 صبح
میتونید یک آرایه رو با اعداد 1 تا 100 پر کنید
و دو عدد رندوم بین 1 تا 100 انتخاب کنید محتوای اون دو خانه را با هم عوض کنید
اینکار تکرار کنید تا اعداد تصادفی بدون تکرار داشته باشید (روش بر زدن)