fillippone
Sr. Member
Offline
Activity: 434
Merit: 945
Hero Member Wannabe


June 27, 2019, 11:30:51 AM 

this is the output for bob123 Profile: https://bitcointalk.org/index.php?action=profile;u=579628 UID 579628 Nick: bob123  Merits: 1150 Activity: 938 Position: Hero Member  SignUp: October 22, 2015, 04 Last: Today at 11 Mail: hidden  Calculate luck 66.0 Missing: ('Merits:', 150, 'Activity:', 163) luck 66% output for not Hero Member is Profile: https://bitcointalk.org/index.php?action=profile;u=889300 UID 889300 Nick: giammangiato  Merits: 25 Activity: 144 Position: Member  SignUp: August 16, 2016, 11 Last: Today at 11 Mail: hidden  Next Position: Full Member Missing: ('Merits:', 75, 'Activity:', 24) Hello, Nice to see some improvements: Thinks I would do:  better formatting of time (both in signup and last) using the hh:mm format
 “last active”, not on “last”
 No negative merits or activity. When negative numbers put “0” instead, or ““ or “Fulfilled”
 If required activity>0 then add a “minimum upgrade date” taking care of activity cycles on the forum.





Advertised sites are not endorsed by the Bitcoin Forum. They may be unsafe, untrustworthy, or illegal in your jurisdiction. Advertise here.

bob123
Legendary
Offline
Activity: 994
Merit: 1403


June 27, 2019, 11:33:33 AM 

this is the output for bob123
[...]
luck 66%
This number says how probable it is to get legendary within 775 and X activity. But it does not say how probable it is to get an rank up with the next update, which would be a bit more useful i think. But regardless of that, nice work.




giammangiato
Member
Offline
Activity: 206
Merit: 62


June 27, 2019, 12:18:37 PM 

Thank you guys, i mean @filippone and @bob123
I'll do the improvements and release the script soon!




fillippone
Sr. Member
Offline
Activity: 434
Merit: 945
Hero Member Wannabe


June 27, 2019, 12:50:58 PM 

this is the output for bob123
[...]
luck 66%
This number says how probable it is to get legendary within 775 and X activity. But it does not say how probable it is to get an rank up with the next update, which would be a bit more useful i think. But regardless of that, nice work. Sorry, As per the formula the number should indicate the probability to be ranked up on next activity cycle. So, basically in 14 days or less you’ll be legendary in the 66% of cases. Check again the formula....




bob123
Legendary
Offline
Activity: 994
Merit: 1403


June 28, 2019, 07:20:29 AM 

Sorry, As per the formula the number should indicate the probability to be ranked up on next activity cycle. So, basically in 14 days or less you’ll be legendary in the 66% of cases. Check again the formula....
This can't be the case. The activity where i rank up is a random number between 938 and (including) 1030. Activity increases by 14 each cycle. This means there are 7 more cycles in which i could get legendary. The chance for me to get legendary in the next cycle therefore is 1/7 = 14%. The next cycle the chance would be 1/6 = 17%. Based on your statement i should be legendary in 3 cycles. But that can not be said if there are 7 more cycles to come. I'd have a 50% chance to get an uprank in the next '3.5' cycles. What your formula does, is to calculate the chance of getting legendary within 775 and X activity (in the quoted calculation above: between 775 and 938).




fillippone
Sr. Member
Offline
Activity: 434
Merit: 945
Hero Member Wannabe


June 28, 2019, 07:51:30 AM Last edit: June 28, 2019, 08:11:38 AM by fillippone 

Sorry, As per the formula the number should indicate the probability to be ranked up on next activity cycle. So, basically in 14 days or less you’ll be legendary in the 66% of cases. Check again the formula....
This can't be the case. The activity where i rank up is a random number between 938 and (including) 1030. Activity increases by 14 each cycle. This means there are 7 more cycles in which i could get legendary. The chance for me to get legendary in the next cycle therefore is 1/7 = 14%. The next cycle the chance would be 1/6 = 17%. Based on your statement i should be legendary in 3 cycles. But that can not be said if there are 7 more cycles to come. I'd have a 50% chance to get an uprank in the next '3.5' cycles. What your formula does, is to calculate the chance of getting legendary within 775 and X activity (in the quoted calculation above: between 775 and 938). Dear lord, you are right! Is this the heatwave over Europe affecting my brain? Here you go Pls note that the first activity where you get a chance to get promoted on next cycle is 14*55=770 if activity>770 then luck numerator=rounddown((activity770)/14,0)+1 luck denominator= rounddown((1030770)/14,0) luck=1/(luckdenominatorlucknumerator+1)




bob123
Legendary
Offline
Activity: 994
Merit: 1403


June 28, 2019, 08:43:21 AM Last edit: June 28, 2019, 08:53:44 AM by bob123 

Pls note that the first activity where you get a chance to get promoted on next cycle is 14*55=770
Why? Legendary requires 775. So theoretically with 77514=761 you'd already have a chance. Note that the activity has not to be divisible by 14. The activity is min(posts, time*14). If your theoretical activity would be higher (e.g. 1000+), but you'd have 761 posts, your activity would be 761. By the way, it is still slightly off luck numerator=rounddown((activity770)/14,0)+1 luck denominator= rounddown((1030770)/14,0) luck=1/(luckdenominatorlucknumerator+1) Take me (activity 938) for example, my probability is roughly 1/7 (14.3 %). But based on your formula, i get: luck numerator = 13 luck denominator = 18 luck = 1/6 The correct formula is: luck = 14 / (1030activity) Quite sad that it took us multiple posts and (way too much) thinking to find that (extremely easy) formula Edit: to be more precise regarding the script: #call getLuck when activity > 760
def getLuck(activity): luck = 14 / ( 1030  activity) if luck > 1: luck = 1 return luck




fillippone
Sr. Member
Offline
Activity: 434
Merit: 945
Hero Member Wannabe


June 28, 2019, 08:55:58 AM 

Pls note that the first activity where you get a chance to get promoted on next cycle is 14*55=770
Why? Legendary requires 775. So theoretically with 77514=761 you'd already have a chance. Note that the activity has not to be divisible by 14. The activity is min(posts, time*14). If your theoretical activity would be higher (e.g. 1000+), but you'd have 761 posts, your activity would be 761. Ok, the activity would be lower if you posted less than 14 posts in an activity cycle. Something that doesn't happen so much, I guess. Take you: your activity is 67*14=938... By the way, it is still slightly off luck numerator=rounddown((activity770)/14,0)+1 luck denominator= rounddown((1030770)/14,0) luck=1/(luckdenominatorlucknumerator+1) Yes, because there's a typo here: luck denominator= rounddown((1030770)/14,0) +1So in your case: Take me (activity 938) for example, my probability is roughly 1/7 (14.3 %). But based on your formula, i get: luck numerator = 13 luck denominator = 19 luck = 14.29% The correct formula is: luck = 14 / (1030activity) Quite sad that it took us multiple posts and (way too much) thinking to find that (extremely easy) formula If my activity were 1022, next cycle I would be legendary as activity it will be 1036. So luck is 100%, but with your formula I get 175%. If my activity were 1008, I would be legendary either at 1022 or at 1036, hence my luck=50%. But with your formula is 63%... I still don't get it... I do agree it is sad.




bob123
Legendary
Offline
Activity: 994
Merit: 1403


June 28, 2019, 09:04:21 AM Merited by fillippone (2) 

If my activity were 1022, next cycle I would be legendary as activity it will be 1036. So luck is 100%, but with your formula I get 175%.
Therefore the if luck > 1: luck = 1 statement If my activity were 1008, I would be legendary either at 1022 or at 1036, hence my luck=50%. But with your formula is 63%...
Well, that's what i thought at the beginning too.. But it is more probable to get promoted in the first cycle than in the second. If max legendary activity is 1030: There are 14 activitypoints between 1008 and 1022 There are 8 activitypoints between 1022 and 1030. If the number is random between 1008 and 1030, it is 'almost' twice as probable for it to be between 1008 and 1022 (probability: 14 / (8+14). And this is 0.636363.. what basically my formula says Edit: A better example: With 1015 activity, the chance of getting a rankup is 'close to 100%'. This basically comes down to a random number between 1 and 15. Probability: (14/15) that it is below 15. Therefore with the formula: luck = 14 / (1030activity)luck = 14 / (1030  1015) = 14 / 15




fillippone
Sr. Member
Offline
Activity: 434
Merit: 945
Hero Member Wannabe


June 28, 2019, 09:13:48 AM 

If my activity were 1022, next cycle I would be legendary as activity it will be 1036. So luck is 100%, but with your formula I get 175%.
Therefore the if luck > 1: luck = 1 statement If my activity were 1008, I would be legendary either at 1022 or at 1036, hence my luck=50%. But with your formula is 63%...
Well, that's what i thought at the beginning too.. But it is more probable to get promoted in the first cycle than in the second. If max legendary activity is 1030: There are 14 activitypoints between 1008 and 1022 There are 8 activitypoints between 1022 and 1030. If the number is random between 1008 and 1030, it is 'almost' twice as probable for it to be between 1008 and 1022 (probability: 14 / (8+14). And this is 0.636363.. what basically my formula says Edit: A better example: With 1015 activity, the chance of getting a rankup is 'close to 100%'. This basically comes down to a random number between 1 and 15. Probability: (14/15) that it is below 15. Therefore with the formula: luck = 14 / (1030activity)luck = 14 / (1030  1015) = 14 / 15
Ok, let's end this embarrassing discussion here and adopt your simpler formula!




giammangiato
Member
Offline
Activity: 206
Merit: 62


June 28, 2019, 10:23:43 AM 

with bob123 formula Calculate luck 15.0 this is the code def calculateLuck(activity): luck = 100 * 14 / (1030  int(activity)) print math.floor(luck) for me not working Merits: 1156 Activity: 938 Position: Hero Member




giammangiato
Member
Offline
Activity: 206
Merit: 62


June 28, 2019, 10:50:10 AM 

“last active”, not on “last”done better formatting of time (both in signup and last) using the hh:mm formatfor an user Profile: https://bitcointalk.org/index.php?action=profile;u=579629 UID 579629 Nick: flash45  Merits: 0 Activity: 5 Position: Newbie  SignUp: 20151022 04:00:00 Last Active: 20151025 07:00:00 Mail: hidden  Next Position: Jr Member Missing: ('Merits:', 1, 'Activity:', 25) No negative merits or activity. When negative numbers put “0” instead, or ““ or “Fulfilled”done Profile: https://bitcointalk.org/index.php?action=profile;u=889300 UID 889300 Nick: giammangiato  Merits: 36 Activity: 147 Position: Member  SignUp: 20160816 11:00:00 Last Active: Today at 10 Mail: hidden  Next Position: Full Member Missing: ('Merits:', 64, 'Activity:', 'FULLFILLED') If required activity>0 then add a “minimum upgrade date” taking care of activity cycles on the forum.i dont understand this




fillippone
Sr. Member
Offline
Activity: 434
Merit: 945
Hero Member Wannabe


June 28, 2019, 10:56:45 AM 

If required activity>0 then add a “minimum upgrade date” taking care of activity cycles on the forum.
i dont understand this
Please check this thread where it explain how activity work: https://bitcointalk.org/index.php?topic=2766177.0There's a spreadsheet with activity cycles. If I am not wrong I will become Hero on the first post (the first post triggers activity update) after UNIX time 1571790000 or 10/23/2019 0:20:00.




bob123
Legendary
Offline
Activity: 994
Merit: 1403


June 28, 2019, 11:19:37 AM 

with bob123 formula Calculate luck 15.0 this is the code def calculateLuck(activity): luck = 100 * 14 / (1030  int(activity)) print math.floor(luck) for me not working Merits: 1156 Activity: 938 Position: Hero Member What exactly does not work? This works without problems for me: def calculateLuck(activity): luck = 100 * 14 / (1030  int(activity)) print (luck)
calculateLuck(938)
And you don't need to use math.floor() in fact you shouldn't because this can create quite some wrong results. If you want to have only 2 decimal places, add round: luck = round (100 * 14 / (1030  int(activity)), 2) Your function should then look like this: def calculateLuck(activity): luck = round (100 * 14 / (1030  int(activity)), 2) if (luck > 100): luck = 100 return (luck)




bitart


June 28, 2019, 08:35:54 PM 

... If I am not wrong I will become Hero on the first post (the first post triggers activity update) after UNIX time 1571790000 or 10/23/2019 0:20:00.
I think you will be a Hero on 9th October 2019. You need 102 activity points to become a Hero. This means (102/14) 7,3 activity periods, so you need 8 activity periods. The next activity period starts on 2nd July 2019 (next Tuesday), the 8th activity period starts on 9th October 2019. But I can also be wrong




fillippone
Sr. Member
Offline
Activity: 434
Merit: 945
Hero Member Wannabe


June 29, 2019, 12:32:32 PM Last edit: June 29, 2019, 12:57:24 PM by fillippone 

... If I am not wrong I will become Hero on the first post (the first post triggers activity update) after UNIX time 1571790000 or 10/23/2019 0:20:00.
I think you will be a Hero on 9th October 2019. You need 102 activity points to become a Hero. This means (102/14) 7,3 activity periods, so you need 8 activity periods. The next activity period starts on 2nd July 2019 (next Tuesday), the 8th activity period starts on 9th October 2019. But I can also be wrong Yeah, you are right. 480 activity is needed, not 500... This thread is the lowest point in my whole btctlk career




giammangiato
Member
Offline
Activity: 206
Merit: 62


July 01, 2019, 08:06:56 AM 

What exactly does not work? This works without problems for me: def calculateLuck(activity): luck = 100 * 14 / (1030  int(activity)) print (luck)
calculateLuck(938)
And you don't need to use math.floor() in fact you shouldn't because this can create quite some wrong results. If you want to have only 2 decimal places, add round: luck = round (100 * 14 / (1030  int(activity)), 2) Your function should then look like this: def calculateLuck(activity): luck = round (100 * 14 / (1030  int(activity)), 2) if (luck > 100): luck = 100 return (luck)
Ah ok thank you!!! I will update the script soon. I will remove Math.floor.




babo
Legendary
Offline
Activity: 1876
Merit: 1207


July 09, 2019, 10:24:21 AM 

i reuse your code for do other stuffs creative recyclingi'm very lazy eheh




