تالار گفتمان مانشت
تولیدعددتصادفی غیرتکراری - نسخه‌ی قابل چاپ

تولیدعددتصادفی غیرتکراری - farima69 - 28 شهریور ۱۳۹۱ ۰۱:۵۸ ب.ظ

سلام دوستان
من میخوام بدونم تو asp چطوری میتونم اعدادتصادفی غیرتکراری تولیدکنم؟
اگرکسی در این مورد اطلاعاتی داره ممنون میشم کمکم کنه چون همش تکراری میده

RE: تولیدعددتصادفی غیرتکراری - Marcel - 28 شهریور ۱۳۹۱ ۰۳:۳۱ ب.ظ

منظورت چیه تو ASP اعداد تصادفی تولید کنی؟؟ احتمالن منظورت #C یا Vb باید باشه ، چون تولید عدد تصادفی تو ASP معنی نمیده!
اینجا توضیح داده:

مهمان عزیز شما قادر به مشاهده پیوندهای انجمن مانشت نمی‌باشید. جهت مشاهده پیوندها ثبت نام کنید.

و اینجا :

مهمان عزیز شما قادر به مشاهده پیوندهای انجمن مانشت نمی‌باشید. جهت مشاهده پیوندها ثبت نام کنید.


تولیدعددتصادفی غیرتکراری - hkarimi - 28 شهریور ۱۳۹۱ ۰۳:۳۸ ب.ظ

سلام.
ببینید این کد به دردتون میخوره؟ مستقیم کپیش کنید توی یه button و برنامه رو اجرا کنید.

کد:
byte[] randomNumber = new byte[1];
System.Security.Cryptography.RNGCryptoServiceProvider.Create().GetBytes(randomNu​mber);
MessageBox.Show("Random Number : " + randomNumber[0].ToString());

نمیدونم تابعی وجود داشته باشه یا نه که خودکار عدد رندوم "غیر تکراری" تولید کنه. یادش بخیر توی خود C بالای تابع Random مینوشتیم Randomize و مشکل حل میشد. البته اینجام کلاس Random داریم ولی اعداد تکراری هم تولید میکنه. با برنامه نویسی هم میشه عدد غیر تکراری تولید کرد، میشه توی یه آرایه هر بار عدد رو ذخیره کرد و بلافاصله بعد از تولید عدد جدید اونو توی آرایه سرچ کنیم.

RE: تولیدعددتصادفی غیرتکراری - farima69 - 28 شهریور ۱۳۹۱ ۰۷:۰۱ ب.ظ

ممنون دوست عزیز،بله منظورم این بود که چه به زبان vb یا # c کسی اطلاعاتی داره راهنماییم کنه

مرسی از کمکتون ولی هنوز مشکلم حل نشدهHuh
اگر کسی میدونه چطوری عدد تصادفی غیرتکراری تو vb.net تولیدکنم ممنون میشم کمک کنه

تولیدعددتصادفی غیرتکراری - hkarimi - 28 شهریور ۱۳۹۱ ۰۸:۲۲ ب.ظ

سلام.
این کد معادل همون کد بالا توی VBه. مث شما که #C زیاد کار نکردید منم VB زیاد کار نکردم ولی معادل سازیش طولی نکشید و این به لطف دات نته.
ان شاء ا... که مشکلتون حل شده باشه.

کد:
Dim r(10) As Byte
System.Security.Cryptography.RNGCryptoServiceProvider.Create().GetBytes(r)
MessageBox.Show("Random Number : " + r(0).ToString())


RE: تولیدعددتصادفی غیرتکراری - Marcel - 28 شهریور ۱۳۹۱ ۰۹:۰۳ ب.ظ

بهترین کار اینه که خودت یه کلاس واسه اینکار بنویسی ، مثلا :

کد:
Public Class RandomNumber
    Dim NumDomain As New ArrayList      ' The Numbers to be generated
    Dim Nums As New ArrayList           ' The Numbers waiting to be generated

    Sub New(ByVal Start As Integer, ByVal Finish As Integer)
        ' Sequential Numbers
        Dim I As Integer
        For I = Start To Finish
            NumDomain.Add(I)
        Next

        AddItems()
    End Sub

    Sub New(ByVal ParamArray Numbers() As Integer)
        ' Numbers in a Param Array
        Dim Number As Integer
        For Each Number In Numbers
            NumDomain.Add(Number)
        Next

        AddItems()
    End Sub

    Private Sub AddItems()

        Nums.Clear()
        ' Insert All Numbers Into the Array
        Dim I As Integer
        For I = 0 To NumDomain.Count - 1
            Nums.Add(NumDomain(I))
        Next
    End Sub

    Public Function GetRandomNumber() As Integer
        If Nums.Count = 0 Then
            ' Re-add the Items, when all the numbers have been generated.
            AddItems()
        End If

        ' Return a Random Item and Remove it from the List
        Dim Ch As Integer

        ' Using Timer as the seed for the Random Number Generation
        Randomize(Microsoft.VisualBasic.Timer)

        ' Random Number is generated within the range.
        Ch = 0 + CInt(Rnd() * (Nums.Count - 1))

        Dim Num As Integer = Nums(Ch)
        Nums.RemoveAt(Ch)
        Return Num
    End Function
End Class

بر اساس این کد مثلا اگه بخوای یه عدد تصادفی بین ۰ تا ۱۰ تولید کنی :

کد:
Dim generator As RandomNumber = new RandomNumber(0, 10)
Dim num As Integer = generator.GetRandomNumber()


RE: تولیدعددتصادفی غیرتکراری - farima69 - 28 شهریور ۱۳۹۱ ۱۱:۴۸ ب.ظ

ممنونم بابت کمک هاتون هردو ایده واقعا جالب بودنSmile
فقط دوست عزیزhkarimi اگر بخوام بهش یه محدوده بدم تا داخل اون محدوده رندوم بسازه شما میدونید داخل دستوری که دادین چطور باید محدوده تعیین کنم؟

تولیدعددتصادفی غیرتکراری - hkarimi - 29 شهریور ۱۳۹۱ ۱۱:۲۱ ق.ظ

سلام. خواهش میکنم، وظیفس.
دوتا نکته. اولاً نمیدونم چجوری برای کدی که خودم گذاشتم محدوده تعیین کنم. یکم با کده بازی کنید، شاید تونستین پیدا کنید.
نکته دوم اینکه منم به کدی که دوستمون آقای Marcel لطف کردن و گذاشتن بر خورد کردم، تشکر از ایشون. اما کده رو که امتحان کردم دیدم عدد تکراری هم تولید میکنه. عکس محدوده ۰ تا ۱۰ رو میذارم.
از
مهمان عزیز شما قادر به مشاهده پیوندهای انجمن مانشت نمی‌باشید. جهت مشاهده پیوندها ثبت نام کنید.
ببینید.

RE: تولیدعددتصادفی غیرتکراری - Marcel - 29 شهریور ۱۳۹۱ ۰۱:۵۲ ب.ظ

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

حالا باز این دوستمون میدونه که با این اعداد میخواد چه کار کنه.
موفق باشید.

RE: تولیدعددتصادفی غیرتکراری - farima69 - 30 شهریور ۱۳۹۱ ۰۲:۱۵ ب.ظ

سلام مرسی دوستان از راهنمایی هاتون
جناب کریمی من یکم با اون کد بازی کردم ولی نتونستم در بیارم ولی باز تلاشمو میکنم،ممنون ،درسته دقیقا غیر تکراری تولید میکرد همون که من میخواستم فقط حیف محدوده نداره.
جناب marcel هم درست میگن روش های ریاضی و... هست ولی من نمیخوام خیلی پیچیدش کنم چون من روی الگوریتمی کار میکنم که اعداد باید حتما تصادفی غیرتکراری باشند تا الگوریتمم جواب بده.
بازم ممنونم بابت کمکاتون