کمک

ruhollah2009

New Member
(کمک)نیازمند یاری سبزتان هستم

با عرض سلام خدمت دوستان
من روی یک پروژه آزمون گیری به زبان ویژوال بیسک دارم کار میکنم
که فعلاً حدود 20 تا سوال داره البته یه فرم براش طراحی کردم که کاربر میتونه بهش سوال اضافه کنه
میخواست قبل از شروع آزمون از کاربر یه عدد دریافت کنه مثلاً 10 و 10 تا سوال به صورت تصادفی از 20تا را انتخاب کنه
از دستور rnd و randomize استفاده کردم ولی هر دوشون اعداد عشاری درست میکنن و تکراری هم داره

من میخوام از کاربر که عدد دریافت کرد به تعداد اون عدد اعداد تصادفی بدون تکرار درست کنه


ممنون میشم کمکم کنید
 
آخرین ویرایش:

the_king

مدیرکل انجمن
با عرض سلام خدمت دوستان
من روی یک پروژه آزمون گیری به زبان ویژوال بیسک دارم کار میکنم
که فعلاً حدود 20 تا سوال داره البته یه فرم براش طراحی کردم که کاربر میتونه بهش سوال اضافه کنه
میخواست قبل از شروع آزمون از کاربر یه عدد دریافت کنه مثلاً 10 و 10 تا سوال به صورت تصادفی از 20تا را انتخاب کنه
از دستور rnd و randomize استفاده کردم ولی هر دوشون اعداد عشاری درست میکنن و تکراری هم داره

من میخوام از کاربر که عدد دریافت کرد به تعداد اون عدد اعداد تصادفی بدون تکرار درست کنه


ممنون میشم کمکم کنید

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

کد:
Private Function [B]GetRandom[/B](ByVal start As Long, ByVal finish As Long, ByVal n As Long) As Long()
    Dim d() As Long, i As Long, j As Long
    ReDim d(0 To n - 1)
    Randomize
    For i = 0 To n - 1
        Do
            d(i) = start + Int(Rnd * (finish - start + 1))
            For j = 0 To i - 1
                If d(i) = d(j) Then Exit For
            Next
            If j = i Then Exit Do
        Loop
    Next
    GetRandom = d
End Function

پارامتر اول شروع بازه و پارامتر دوم انتهای بازه و پارامتر سوم تعداد اعدادی است که باید انتخاب شوند.
به عنوان مثال کد زیر از بین اعداد 1 الی 20 به تعداد 10 عدد را انتخاب می کند :
کد:
Private Sub Form_Load()
    Dim a() As Long
    a = [B]GetRandom[/B](1, 20, 10)
    
    Dim i As Long, s As String
    For i = LBound(a) To UBound(a)
        s = s & a(i) & "  "
    Next
    MsgBox s
    End
End Sub
 

جدیدترین ارسال ها

بالا