امتیاز موضوع:
  • 0 رأی - میانگین امتیازات: 0
  • 1
  • 2
  • 3
  • 4
  • 5
توليداعداد تصادفي
نویسنده پیام
ARRN_Magic-Systems آفلاین
كاربر دو ستاره
**

ارسال‌ها: 72
موضوع‌ها: 16
تاریخ عضویت: بهمن ۱۳۸۳

تشکرها : 0
( 5 تشکر در 5 ارسال )
ارسال: #1
توليداعداد تصادفي
با سلام
دوستان فرأيندتوليداعدادتصادفي به جه شكله؟
وأيا وقتي در وي بي ار Randomize و Rnd براي توليد اين اعداد استفاده ميكنيم ميشه مستقيما
تضمين كرد كه هيج عدد تصادفي تكراري توليدنميشه يا خير؟

باتشكر
۱۳-اردیبهشت-۱۳۸۴, ۱۳:۱۴:۲۲
ارسال‌ها
پاسخ
afshin آفلاین
كاربر دو ستاره
**

ارسال‌ها: 162
موضوع‌ها: 8
تاریخ عضویت: مرداد ۱۳۸۳

تشکرها : 0
( 11 تشکر در 9 ارسال )
ارسال: #2
 
نه كه تضميني نيست كه عدد تكراري نياد ...

ممكنه 100 بار اجرا كني اعداد تكراري نباشه ولي 3 بار اجرا كني هر 3 بار تكراري باشه

تصادفيه ديگه !!! :arrow:
۱۳-اردیبهشت-۱۳۸۴, ۱۴:۴۰:۳۲
وب سایت ارسال‌ها
پاسخ
mehdvirus آفلاین
در حال پیشرفت
***

ارسال‌ها: 439
موضوع‌ها: 27
تاریخ عضویت: اسفند ۱۳۸۲

تشکرها : 0
( 39 تشکر در 26 ارسال )
ارسال: #3
 
تاييد ميشه :!:
بعضي وقتها اين راندوم حال ادمو ميگيره
۱۳-اردیبهشت-۱۳۸۴, ۱۵:۲۰:۵۴
ارسال‌ها
پاسخ
ha_60 آفلاین
بنيانگذار سايت
******

ارسال‌ها: 4,637
موضوع‌ها: 216
تاریخ عضویت: آبان ۱۳۸۳

تشکرها : 560
( 6556 تشکر در 2385 ارسال )
ارسال: #4
 
تاييد نميشه Amaze
نقل قول: ميشه مستقيما تضمين كرد كه هيج عدد تصادفي تكراري توليدنميشه يا خير؟
اگه 11 عدد تصادفي صحيح بين يك تا 10 توليد كني حتما يكي تكراري خواهد بود و حتي هر 11 عدد هم مي توانند برابر باشند
و اما روش تا اونجا كه من مي دونم از روي تايمر اين عدد توليد ميشد و اگه از اون دستور Randomize استفاده نكني اين اعداد براي اجراي دوم با اجراي اول برابر خواهند بود (البته تو داس ويندوز رو نمي دونم)

هادی امین زاده
دیدن چیزی که همه می بینند هنر نیست
بانک اطلاعات صنایع ایران.
۱۳-اردیبهشت-۱۳۸۴, ۱۸:۵۶:۵۰
وب سایت ارسال‌ها
پاسخ
تشکر شده توسط : t3r!p3000, Ghoghnus
Mamad2003 آفلاین
کاربر با تجربه
****

ارسال‌ها: 1,150
موضوع‌ها: 18
تاریخ عضویت: آذر ۱۳۸۲

تشکرها : 9
( 388 تشکر در 232 ارسال )
ارسال: #5
 
نبايد هم تضميني باشه !!
كامپيوتر اعداد تصادفي رو از روي ساعت كامپيوتر درست مي كنه !
حالا اگه از كلمه Randomize استفاده كني متفاوت ميشه اما تضميني نيست :roll:

گويند بهشت و حور و کوثر باشد  ..  جوي می و شير و شهد و شکر باشد
پر کن قدح باده و بر دستم نه      ..   نقدي ز هزار نسيه خوشتر باشد  
۱۳-اردیبهشت-۱۳۸۴, ۲۰:۱۰:۱۰
ارسال‌ها
پاسخ
تشکر شده توسط : t3r!p3000
ARRN_Magic-Systems آفلاین
كاربر دو ستاره
**

ارسال‌ها: 72
موضوع‌ها: 16
تاریخ عضویت: بهمن ۱۳۸۳

تشکرها : 0
( 5 تشکر در 5 ارسال )
ارسال: #6
 
اين مطلب رو تر msdn يافتم ولي معناي اون رو متوجه نميشم لطفا كممممممكككككككك:

Note To repeat sequences of random numbers, call Rnd with a negative argument
immediately before using Randomize with a numeric argument.
Using Randomize with the same value for number does not repeat the previous sequence.
۱۶-اردیبهشت-۱۳۸۴, ۱۶:۰۲:۳۵
ارسال‌ها
پاسخ
Mamad2003 آفلاین
کاربر با تجربه
****

ارسال‌ها: 1,150
موضوع‌ها: 18
تاریخ عضویت: آذر ۱۳۸۲

تشکرها : 9
( 388 تشکر در 232 ارسال )
ارسال: #7
 
دوست عزيز ترجمه اين مطالب اينه :

توجه داشته باشيد براي تكرار مراتبي از اعداد تصادفي ؛ تابع Rnd رو با يك آرگومان منفي بلافاصله و قبل از تابع Randomize با آرگومان عددي ؛ صدا بزنيد !
استفاده از تابع Randomize با مقدار مشابه به عنوان آرگومان ؛ مراتب قبلي توليد اعدد تصادفي را تكرار نخواهد كرد . :roll:

حالا معناي اين يعني چي :

اين يعني اگه بخواي يه عدد تصادفي رو به كرات استفاده كني و همچنين چند تا عدد تصادفي ديگه هم در كنار اون داشته باشي ميتوني با تابع Rnd و آرگومان منفي اين كار رو انجام بدي :

منظورم اينه كه اگه تابع (Rnd(-1 رو صدا بزني و اين تابع يه مقدار تصادفي براي شما ايجاد كنه و شما (Rnd(-2 بعد از اون صدا بزني و اين تابع هم يه عدد تصادفي ديگه رو براي شما ايجاد كنه ؛ اگر دوباره بخواي مقدار عدد تصادفي اي كه در تابع (Rnd(-1 بدست آوردي رو دوباره بگيري كافيه كه اين تابع رو دوباره صدا بزني ( البته با همون آرگومان منفي اش ) . خواهي ديد كه مقدارش تغيير نمي كنه و در نتيجه مراتب توليد عدد تصادفي شما دوباره تكرار ميشه !
كد زير رو امتحان كن تاببيني خط اول و خط آخرش يه مقدار رو توليد خواهد كرد :

کد:
MsgBox Str(Rnd(-1))
MsgBox Str(Rnd(-2))
MsgBox Str(Rnd(-1))

حالا اگه از آرگومان منفي استفاده نكني مقادير شما تكراري نخواهد بود :

کد:
MsgBox Str(Rnd(1))
MsgBox Str(Rnd(-2))
MsgBox Str(Rnd(-1))

در آخر هم ؛از اين متن ميشه فهميد كه استفاده از تابع Randomize باعث ميشه كه مرتب اعداد تصادفي شما كه يكسان نباشند به شرطي كه از آرگومان خاصي براي تابع Rnd استفاده نشه !

گويند بهشت و حور و کوثر باشد  ..  جوي می و شير و شهد و شکر باشد
پر کن قدح باده و بر دستم نه      ..   نقدي ز هزار نسيه خوشتر باشد  
۱۶-اردیبهشت-۱۳۸۴, ۱۶:۴۴:۵۶
ارسال‌ها
پاسخ
تشکر شده توسط : t3r!p3000
ARRN_Magic-Systems آفلاین
كاربر دو ستاره
**

ارسال‌ها: 72
موضوع‌ها: 16
تاریخ عضویت: بهمن ۱۳۸۳

تشکرها : 0
( 5 تشکر در 5 ارسال )
ارسال: #8
 
قربانت ممد جان ممنون که واسه ما انقدر به خودت زحمت میدی
من دارم روی یه پروژه کار میکنم که کلا سرو کارش با رندوم و رندوم بازاره و کار بسیار جالبی هم هست
تولید اعداد تصادفی و کیفیتو چند و چون اونا مستقیما روی کارم اثر میذاره
برای مشکل تکراری بودنشون میشه دستی چکش کرد مثلا من براش تابع زیر رو نوشتم
اونقدر عدد تولید بشه تا به یه عدد غیر تکراری برسیم
البته اگه حداقل دیگه تعداد و محدوده برابر باشند
کد:
Public Function Create_Rnd(RecNum As Integer, qNum As Integer) As String
  Dim arr() As Integer
  Dim I As Integer
  Dim J  As Integer
  Dim s As String
  Dim C As Integer
  
ReDim arr(qNum)
For I = 1 To qNum
  
GiveAnother:
  C = 0
  Randomize
  arr(I) = Int(RecNum * Rnd + 1)
  For J = 1 To I
    If arr(I) = arr(J) Then
      C = C + 1
      If C > 1 Then
          GoTo GiveAnother
      End If
    End If
  Next J

Next I

  
For I = 1 To qNum - 1
   s = s & Str(arr(I)) & ","
Next I
s = s & Str(arr(qNum))

Create_Rnd = s

End Function
۱۷-اردیبهشت-۱۳۸۴, ۰۲:۰۸:۳۶
ارسال‌ها
پاسخ
تشکر شده توسط : t3r!p3000
Mamad2003 آفلاین
کاربر با تجربه
****

ارسال‌ها: 1,150
موضوع‌ها: 18
تاریخ عضویت: آذر ۱۳۸۲

تشکرها : 9
( 388 تشکر در 232 ارسال )
ارسال: #9
 
عزيزم من كاري نكردم :oops:
:idea: نبايد كلا با وجود تابع Randomize اعداد تكراري بشن اما اينو هم نبايد نديده گرفت كه اگه سر و كارمون با شانس و احتمالات باشه خاصيت تكرار هم ميتونه وجود داشته حالا اگه احتمال وقوع اون 1 در ميليون باشه !
دقيقا مثل پرتاب 30 تا سكه كه مي تونن 30 تاشون شير يا خط بيان با وجود اينكه احتمالش 1 در چند هزاره !! :?
همچنين من شنيدم كه ايجاد عدد تصادفي واقعي براي كامپيوتر هاي فعلي امكان پذير نيست چون كامپيوتر يه وسيله الكترونيكيه و همه كاراش رو يه اصول از پيش تعيين شده ميره جلو پس 100 درصد توليد اعداد تصادفي هم بايد يه قاعده خاص داشته باشه . طراحان ميگن كه ما از ميلي ثانيه هاي موجود در ساعت كامپيوتر براي ساخت اعداد تصادفي استفاده مي كنيم ! :roll: چطورش رو خدا مي دونه !! 8O

گويند بهشت و حور و کوثر باشد  ..  جوي می و شير و شهد و شکر باشد
پر کن قدح باده و بر دستم نه      ..   نقدي ز هزار نسيه خوشتر باشد  
۱۷-اردیبهشت-۱۳۸۴, ۰۴:۳۳:۳۳
ارسال‌ها
پاسخ
تشکر شده توسط : t3r!p3000
smart_slims آفلاین
كاربر تک ستاره
*

ارسال‌ها: 39
موضوع‌ها: 5
تاریخ عضویت: خرداد ۱۳۸۴

تشکرها : 0
( 1 تشکر در 1 ارسال )
ارسال: #10
با اين كد ميشه عددي تصادفي بين 1 تا 6 پيدا كرد
MyValue = CInt(Int((6 * Rnd()) + 1)) ' Generate random value between 1 and 6
البته اگه جاي 6 را با يك عدد ديگري عوض كنيد آنوقت عددي تصادفي بين 1 و آن عدد توليد خواهد شد
منبع : راهنماي وي بي دات نت
۰۷-خرداد-۱۳۸۴, ۱۷:۳۹:۲۴
وب سایت ارسال‌ها
پاسخ
تشکر شده توسط : t3r!p3000
amirjan آفلاین
مدیر بازنشسته
*****

ارسال‌ها: 1,105
موضوع‌ها: 24
تاریخ عضویت: تير ۱۳۸۳

تشکرها : 348
( 697 تشکر در 251 ارسال )
ارسال: #11
 
اينم من قبلا نوشته بودم ، البته من اينو به خاطر شانس و ايناش نمي خواستم ،‌ گفتم حالا بذارم شايد به كارت اومد (براي طول هاي بزرگتر از 1 طراحي شده ! ) :
کد:
Function RndNum(Lenght)
On Error Resume Next
If Lenght = 0 Then
MsgBox "Your Lenght must be biger than 0 !", vbExclamation, "Error!"
Exit Function
ElseIf Lenght = 1 Then
i = ""
For c = 1 To 20
Randomize
b = Int(Rnd(999999) * 999999) + 100000
i = i & b
Next
If Mid(i, (Len(b) / 2) - 1, 1) = 0 Then
RndNum = Mid(Mid(Int(Rnd(999999999999#) * 999999999999#) + 1000000000, (Len(b) / 2) - 1, 1) + 1, 1, 1)
Else
RndNum = Mid(i, (Len(b) / 2) - 1, 1)
End If
Else
i = ""
For c = 1 To Lenght
Randomize
b = Int(Rnd(9999) * 9999) + 1000
i = i & b
Next
RndNum = Left(i, Lenght)
End If
End Function
کد:
MsgBox RndNum(50)

سید امیر حسین حسنینی

Human knowledge belongs to the world ...
۰۷-خرداد-۱۳۸۴, ۱۸:۱۳:۳۱
ارسال‌ها
پاسخ
تشکر شده توسط : t3r!p3000, javaweb


موضوعات مرتبط با این موضوع...
موضوع نویسنده پاسخ بازدید آخرین ارسال
  توليد اعداد تصادفي 4 رقمي بدون تكرار با ويژوال بيسيك 6 نارينا 1 8,195 ۰۴-آذر-۱۳۸۶, ۰۲:۵۹:۴۲
آخرین ارسال: Mamad2003

پرش به انجمن:


کاربرانِ درحال بازدید از این موضوع: 2 مهمان

صفحه‌ی تماس | IranVig | بازگشت به بالا | | بایگانی | پیوند سایتی RSS