Jump to content

Percent_Luckycharacter


asmazh
 Share

Recommended Posts

Percent_LuckyCharacter

Dün akşam yazdığım işe yarar bir fonksiyon. Saygılar.

 

#cs

	Yazar         : Mahmut TAŞKIRAN, AsmazH.TM
	Fonksiyon İsmi: Percent_LuckyCharacter
	Parametreler  : $RndmPercentList, $Percent_R (Varsayılan = %100), $Max (Varsayılan = -1)

	$RPL
	Bu parametreye dada önceden tanımlamış olduğunuz çift hücreli dizi göndermek zorundasınız. Her dizinin ilk elementi
	değerlendirilecek eleman, ikinci elementi ise tutma olasılığı olmak zorunda.
	Örneğin;
	$RndmPercentList[5][2] = [[1, 50], [2, 70], [3, 10], [4, 90], [5, 100]]
	Bu örnekte "1" sayısının gelme olasılığını %50 yaptık. "2" sayısının gelme olasılığını %70 yaptık. vs...
	$Percent_R
	Bu parametreye olasılığın değerlendirme biçimini girin. Örneğin bu parametreye 100 gönderirseniz %100 üzerinden denetlernir.
	500 gönderirseniz %500 üzerinden denetlenir. vs...
	$Max
	Eğer bu parametreyi boş ya da -1 gönderirseniz belirlemiş olduğunuz dizindeki elemanların %'lerini denetler. Eğer tutarsa geri dönüş
	değerine eklenir. Yok eğer tutmazsa element bir daha değerlendirilmez. Yani kısaca geri dönüş değeri olarak %'si tutan elementler döner.
	Bu parametreye geri dönüş değerinin eleman sayısını (dilerseniz) girin.

	Geri dönüş değeri;
	False ya da 0 (Böyle bir dönüş aldıysanız kesinlikle bir yerlerde bir hata yapmışsınızdır. Büyük olasılıkla mantık hatası)

#ce

Func Percent_LuckyCharacter($RPL, $Percent_R = 100, $Max = -1)

	If Not IsArray($RPL) Then Return SetError(1, 0, False)
	If $Max <> -1 And $Max < 0 Then Return SetError(0, 0, False)

	Local $P_RP, $Percent

	If $Max = -1 Then

		For $i = 0 To UBound($RPL) - 1
			If $RPL[$i][1] < 1  Then Return SetError(2, 0, False)
			$Percent = Random(1, $Percent_R, 0)
			If $Percent <= $RPL[$i][1] Then $P_RP &= $RPL[$i][0]
		Next

	Else

		Do
			For $i = 0 To UBound($RPL) - 1
				If $RPL[$i][1] < 1  Then Return SetError(2, 0, False)
				$Percent = Random(1, $Percent_R, 0)
				If $Percent <= $RPL[$i][1] Then $P_RP &= $RPL[$i][0]
			Next
		Until StringLen($P_RP) >= $Max

	EndIf
	Return $P_RP

EndFunc   ;==>Percent_LuckyCharacter

; - ÖRNEKLER

;~  Örnek 1
; 	Bu örnekte "1" sayısının gelme olasılığını %50 yaptık. 2 sayısının gelme olasılığını %50 yaptık.
;  	3 sayısının gelme olasılığını %8 yaptık.
;   $Percent_R değerini 100 yaparak %100 üzerinden değerlendirilmesini sağlayacağız.

Local $RndmPercentList[10][2] = [[1, 50],[2, 70],[3, 8],[4, 90],[5, 100],[6, 58],[7, 34],[8, 82],[9, 99],[0, 100]]
MsgBox(0, "Örnek 1", "Şanslı sayılar" & @CRLF & Percent_LuckyCharacter($RndmPercentList, 100))

;~  Örnek 2
; 	Bu örnekte "Mahmut"u (yani beni :D) gelme olasılığını %99 yaptık. vs... (Artık anlamışsınızdır farz ediyorum) :)
;   $Percent_R değerini 100 yaparak %100 üzerinden değerlendirilmesini sağlayacağız.

Local $LuckyPersons[5][2] = [["Mahmut ", 99],["Taşkıran ", 50],["Tülay ", 8],["Abasıyanık ", 60],["O kız benim olacak! ", 37]]
MsgBox(0, "Örnek 2", "Şanslı kişiler" & @CRLF & Percent_LuckyCharacter($LuckyPersons, 100))

;~  Örnek 3
; 	Bu örnekte "1" sayısının gelme olasılığını %50 yaptık. 2 sayısının gelme olasılığını %50 yaptık.
;  	3 sayısının gelme olasılığını %8 yaptık.
;   $Percent_R değerini 100 yaparak %100 üzerinden değerlendirilmesini sağlayacağız.

Local $RndmPercentList[10][2] = [[1, 50],[2, 70],[3, 8],[4, 90],[5, 100],[6, 58],[7, 34],[8, 82],[9, 99],[0, 100]]
MsgBox(0, "Örnek 3", "Şanslı sayılar" & @CRLF & Percent_LuckyCharacter($RndmPercentList, 100, 10))

; Fark ettiyseniz $Max parametresine "10" gönderdik. Geri dönüş 10 elemanlı bir string olacaktır.
Edited by asmazh
Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

 Share

  • Recently Browsing   0 members

    No registered users viewing this page.

×
×
  • Create New...