asmazh Posted March 12, 2013 Share Posted March 12, 2013 (edited) 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 March 12, 2013 by asmazh Quote Link to comment Share on other sites More sharing options...
Recommended Posts
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.