رفتن به مطلب
  • 0

درخواست تابع انتخاب عدد تصادفی بین دوعدد بزرگ


behnam_tr

سوال

سلام دوستان

یه مشکلی دارم خیلی سرچ کردم به جایی نرسیدم

من یه تابع میخوام که مثل تابع rnd که در بازه دو عدد یک عدد تصادفی برگردونه

منتها چون اعداد من بزرگ هستن (10 رقمی) تابع rnd که برای اعداد integer هست جواب نمیده

کسی میتونه راهنمایی کنه

مثال :

عدد اول 4650000000

عدد دوم  4669999999

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

 

ممنون

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

3 پاسخ به این سوال تاکنون داده شده است

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

سلام 

یه راهش برای مثال شما باهمین دستور Rnd ، اینه که اونا رو تبدیل به رشته بکنید

و نصف نصف رندومشونو بگیرید بعد پشت سرهم بچینید

و رشته رو تبدیل به عدد ازنوع long کنید ،

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

این نمونه رو براتون نوشتم: 

 

	  
Dim a As Long
Dim b As Long
	a= 4650000000
	b= 4669999999
	Dim a_c As String
	Dim b_c As String
	Dim aa1_c As String
	Dim bb1_c As String
	Dim aa2_c As String
	Dim bb2_c As String

a_c = a	
b_c=b

aa1_c=a_c.SubString2(0,(a_c.Length/2))    
aa2_c=a_c.SubString2((a_c.Length/2),(a_c.Length))

	bb1_c=b_c.SubString2(0,(b_c.Length/2))
	bb2_c=b_c.SubString2((b_c.Length/2),(b_c.Length))

	Log("بخش اول عدد اولی :"&aa1_c)
	Log("بخش دوم عدد دومی: "&aa2_c)
	
	Log("بخش اول عدد دومی : "&bb1_c)
	Log("بخش دوم عدد دومی: "& bb2_c)
	
	Log("رندوم بخش اول دوعدد: "&Rnd (aa1_c,bb1_c))
	Log("رندوم بخش دوم دوعدد: "&Rnd (aa2_c,bb2_c))

	Dim rnd_ab1 As String
	Dim rnd_ab2 As String
	Dim rnd_ab As String
	
	
	rnd_ab1 =Rnd (aa1_c,bb1_c)
	rnd_ab2=Rnd (aa2_c,bb2_c)

	rnd_ab= rnd_ab1&rnd_ab2
	
	Log("rnd-string:  "&rnd_ab)

	Dim rnd_ab_int As Long
	
	rnd_ab_int=rnd_ab
	
	Log("rnd-Long:  "&rnd_ab_int)
	

 

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

ممنون راه حل جالبی بود

فعلا کارم با عداد long درست

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

 اینم کد نمونه برای استفاده دوستان

Sub rnd2(min1 As Long,max1 As Long) As Long
	
	Dim t,num2 As Long=0
	Dim num As Int=0
	
	Log(min1)
	Log (max1)
	t=max1-min1
	Dim ar(t) As Long
	For i=0 To t-1
		ar(i)=min1+i
	Next

	num=Rnd(0,t)
	num2=ar(num)

	Return num2

	
End Sub 

 

 

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

در 19 ساعت قبل، نورنما گفته است :

سلام 

یه راهش برای مثال شما باهمین دستور Rnd ، اینه که اونا رو تبدیل به رشته بکنید

و نصف نصف رندومشونو بگیرید بعد پشت سرهم بچینید

و رشته رو تبدیل به عدد ازنوع long کنید ،

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

این نمونه رو براتون نوشتم: 

 


	  
Dim a As Long
Dim b As Long
	a= 4650000000
	b= 4669999999
	Dim a_c As String
	Dim b_c As String
	Dim aa1_c As String
	Dim bb1_c As String
	Dim aa2_c As String
	Dim bb2_c As String

a_c = a	
b_c=b

aa1_c=a_c.SubString2(0,(a_c.Length/2))    
aa2_c=a_c.SubString2((a_c.Length/2),(a_c.Length))

	bb1_c=b_c.SubString2(0,(b_c.Length/2))
	bb2_c=b_c.SubString2((b_c.Length/2),(b_c.Length))

	Log("بخش اول عدد اولی :"&aa1_c)
	Log("بخش دوم عدد دومی: "&aa2_c)
	
	Log("بخش اول عدد دومی : "&bb1_c)
	Log("بخش دوم عدد دومی: "& bb2_c)
	
	Log("رندوم بخش اول دوعدد: "&Rnd (aa1_c,bb1_c))
	Log("رندوم بخش دوم دوعدد: "&Rnd (aa2_c,bb2_c))

	Dim rnd_ab1 As String
	Dim rnd_ab2 As String
	Dim rnd_ab As String
	
	
	rnd_ab1 =Rnd (aa1_c,bb1_c)
	rnd_ab2=Rnd (aa2_c,bb2_c)

	rnd_ab= rnd_ab1&rnd_ab2
	
	Log("rnd-string:  "&rnd_ab)

	Dim rnd_ab_int As Long
	
	rnd_ab_int=rnd_ab
	
	Log("rnd-Long:  "&rnd_ab_int)
	

 

ممون

کارم با این تابع را افتاد

خیلی متشکر

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

بایگانی شده

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

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

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