wetsuit (OP)
Legendary
Offline
Activity: 981
Merit: 1026
|
|
June 20, 2014, 07:52:44 PM |
|
But you said you made only 500 rolls? Or did you mean some bigger test? You need more rolls to get 3rd and 4th prizes (at least 1250-5000).
That last statement ("I've never rolled more than 9993 on any of my multiplier or regular rolls on neither faucet") I referred to all of my plays on either freebitco.in and freedoge.co.in which total way over 2000 rolls so by calculating 1-(9993/10000)^2000+ the probability should be 75%+. Ok, lets assume prob for rolling 10k is 1/20000. But by simply checking the freebitco.in WEBSITE STATS, there was currently 538,271,966 played and 394.52490422 BTC earned, if we consider that you can ONLY win top roll price (huge undervaluation) and probability is 1/20000 to earn ONLY 0.1 BTC (undervalued) -> the expected earned value of BTC should be 2700 BTC (way more than 394). And if we say that all ppl were extremely unlucky we can check; variance=npq=538271996*1/20000*19999/20000 sqrt(var)=164 99.7% rule (3 std deviations): Still users should earn at LEAST: 2700-3*164= 2200 BTC, and this is with only top win of 0.1 btc. Those rolls include both free and multiply rolls, and multiply rolls are way more in number. Alright, that explains it sufficiently enough then But why is there such a huge discrepancy when generating a roll. Notice the frequency of occurrences inside the 5001-6000 bracket. I am not trying to accuse or anything but the randomness procedure might well be flawed. Posting results: Number Expected Observed (O-E)^2/E 1-1000 50 45 0,5 1001-2000 50 42 1,28 2001-3000 50 50 0 3001-4000 50 39 2,42 4001-5000 50 52 0,08 5001-6000 50 77 14,58 6001-7000 50 51 0,02 7001-8000 50 41 1,62 8001-9000 50 42 1,28 9001-10000 50 61 2,42 I am not sure to be honest, maybe you need a larger sample size ? I shall look into ways to make the client and server seed generation more random.
|
|
|
|
Luror
|
|
June 20, 2014, 07:56:23 PM |
|
But you said you made only 500 rolls? Or did you mean some bigger test? You need more rolls to get 3rd and 4th prizes (at least 1250-5000).
That last statement ("I've never rolled more than 9993 on any of my multiplier or regular rolls on neither faucet") I referred to all of my plays on either freebitco.in and freedoge.co.in which total way over 2000 rolls so by calculating 1-(9993/10000)^2000+ the probability should be 75%+. You are forgetting there's also possible to roll "0" (probability is also 1/20000), so it's a little less 1-(1/20000+9993/10000)^2000 ~ 73% Doesn't change the number much though
|
BTC: 1DzAEtLoFxqmJoNH5ZYHyWxaSNYUGKf2S6
|
|
|
natri
Newbie
Offline
Activity: 7
Merit: 0
|
|
June 20, 2014, 07:59:06 PM |
|
But you said you made only 500 rolls? Or did you mean some bigger test? You need more rolls to get 3rd and 4th prizes (at least 1250-5000).
That last statement ("I've never rolled more than 9993 on any of my multiplier or regular rolls on neither faucet") I referred to all of my plays on either freebitco.in and freedoge.co.in which total way over 2000 rolls so by calculating 1-(9993/10000)^2000+ the probability should be 75%+. You are forgetting there's also possible to roll "0" (probability is also 1/20000), so it's a little less 1-(1/20000+9993/10000)^2000 ~ 73% Doesn't change the number much though Well, yeah. When it comes to large numbers, statistics shall prevail I will check more thoroughly into it when I have some spare time. Gonna post my results here.
|
|
|
|
Luror
|
|
June 20, 2014, 09:05:56 PM |
|
I will check more thoroughly into it when I have some spare time. Gonna post my results here.
I have an idea for you: try to do it in various browsers, as it's possible that Javascript math.random implementation is to blame. Which one did you use for your test, by the way?
|
BTC: 1DzAEtLoFxqmJoNH5ZYHyWxaSNYUGKf2S6
|
|
|
natri
Newbie
Offline
Activity: 7
Merit: 0
|
|
June 21, 2014, 01:48:01 AM |
|
I will check more thoroughly into it when I have some spare time. Gonna post my results here.
I have an idea for you: try to do it in various browsers, as it's possible that Javascript math.random implementation is to blame. Which one did you use for your test, by the way? Google chrome.
|
|
|
|
|
arieq
|
|
June 22, 2014, 06:49:16 AM |
|
It would be great if all fields from the above URL are automatically filled with previous rolls details when someone clicks on CLICK HERE TO VERIFY YOUR ROLLS link, so that he only needs to click VERIFY button to verify the rolled number and no need to copy paste one by one
|
|
|
|
wetsuit (OP)
Legendary
Offline
Activity: 981
Merit: 1026
|
|
June 22, 2014, 07:22:09 AM |
|
It would be great if all fields from the above URL are automatically filled with previous rolls details when someone clicks on CLICK HERE TO VERIFY YOUR ROLLS link, so that he only needs to click VERIFY button to verify the rolled number and no need to copy paste one by one Will do shortly.
|
|
|
|
wetsuit (OP)
Legendary
Offline
Activity: 981
Merit: 1026
|
|
June 22, 2014, 07:52:48 AM |
|
It would be great if all fields from the above URL are automatically filled with previous rolls details when someone clicks on CLICK HERE TO VERIFY YOUR ROLLS link, so that he only needs to click VERIFY button to verify the rolled number and no need to copy paste one by one done!
|
|
|
|
arieq
|
|
June 22, 2014, 08:04:24 AM |
|
It would be great if all fields from the above URL are automatically filled with previous rolls details when someone clicks on CLICK HERE TO VERIFY YOUR ROLLS link, so that he only needs to click VERIFY button to verify the rolled number and no need to copy paste one by one done! great, it works.
|
|
|
|
natri
Newbie
Offline
Activity: 7
Merit: 0
|
|
June 22, 2014, 07:22:10 PM |
|
Hey guys, I'm back! I've gotta say I spent quite some time working things out, and this time I've manually obtained numbers from exactly 1000 rolls! Yes, 1k rolls, every single one recorded and written down in my excel file for later analysis. And I've gotta say the results don't surprise. Running chisquare test gave again a quite confident rejection of the null. Numbers probabilistically don't seem random. Some info you might wonder (my test size of 1000 rolls): MAX value: 9986 MIN value: 3 Median: 4815 Mean: 4832,296 9056 values never occurred, 885 singles, 53 duplicates and 3 (!!) triplicates. Some numbers are even complete obvious duplicates of what I got in my past rolls. I am VERY strongly inclined to believe the probability of certain values is much MUCH higher than some others (here we esp. wonder about 9998,9999 and 10000 - who has ever even seen those?!). You indeed did not change the roll outcome and you used the same server and client seeds (all correct), however, even with completely random inputs (client seed, server seed) the final outcome is most likely not a random number ranging from 0-10000, I am quite confident in that.
|
|
|
|
wetsuit (OP)
Legendary
Offline
Activity: 981
Merit: 1026
|
|
June 22, 2014, 07:33:10 PM |
|
Hey guys, I'm back! I've gotta say I spent quite some time working things out, and this time I've manually obtained numbers from exactly 1000 rolls! Yes, 1k rolls, every single one recorded and written down in my excel file for later analysis. And I've gotta say the results don't surprise. Running chisquare test gave again a quite confident rejection of the null. Numbers probabilistically don't seem random. Some info you might wonder (my test size of 1000 rolls): MAX value: 9986 MIN value: 3 Median: 4815 Mean: 4832,296 9056 values never occurred, 885 singles, 53 duplicates and 3 (!!) triplicates. Some numbers are even complete obvious duplicates of what I got in my past rolls. I am VERY strongly inclined to believe the probability of certain values is much MUCH higher than some others (here we esp. wonder about 9998,9999 and 10000 - who has ever even seen those?!). You indeed did not change the roll outcome and you used the same server and client seeds (all correct), however, even with completely random inputs (client seed, server seed) the final outcome is most likely not a random number ranging from 0-10000, I am quite confident in that. Did you test these on the free play or multiply btc game ? Would you be able to provide me with the list of server seeds, client seeds and nonces so I can go through them ?
|
|
|
|
wetsuit (OP)
Legendary
Offline
Activity: 981
Merit: 1026
|
|
June 22, 2014, 07:40:38 PM |
|
|
|
|
|
wetsuit (OP)
Legendary
Offline
Activity: 981
Merit: 1026
|
|
June 23, 2014, 03:26:57 PM |
|
Users can now request a manual withdrawal by clicking on the MANUAL WITHDRAWAL button in the FREE PLAY page. The minimum amount required for a manual withdrawal is only 0.00006000 BTC and manual withdrawals will carry a fee of only 0.00000400 BTC!
|
|
|
|
Aquilo
Newbie
Offline
Activity: 8
Merit: 0
|
|
June 24, 2014, 10:46:03 PM Last edit: June 24, 2014, 11:20:06 PM by Aquilo |
|
I really don't mind if the top paying number is unreachable or not, they give FREE bitcoins/doge coins and that is something they don't have to do. But I'm very happy they do!!! But I love to tinker, so i make a script to test this out... a fast run will print something like this... {"9999" [{"Client": "Bb2X2OHbnoDdYxnJ", "Server": "OrGqUxpBuKFg", "nonce": "2014"}] {"9999" [{"Client": "EROQqsMbdG6OeKp", "Server": "JDz5mY6qcmLi", "nonce": "3821"}] {"9999" [{"Client": "R3ZVaapxrpNFtlWK", "Server": "nZELaYrdcaEu", "nonce": "4360"}] {"9999" [{"Client": "sb73Ls2O9kYIkZOB", "Server": "NViuHQev34p", "nonce": "8525"}] Tried 10000 times... 10k never found. if fast is set to 0 it returns every number rolled... so, this isn't their script so I can't get the last roll number to work from their site, this is just to see if it's even possible to get 10,000 to roll... and out of the insane number of times I've run this, I've never gotten 10,000... but from my code block above, 9999 is found often! I don't normally like to share code, but it's been 10 years since the last time I've shared... open source made me bitter lol. but this is easy code nothing to it... As I was saying this isn't like their code, there is something different in they way they hash the 2 seeds together, but this uses all the info available to just try and see if rolling 10k is possible. info known: - player seed is 16 char long, code converted from JS example.
- last roll server seed was 12 char long, going with that.
- the nonce seems to progress with the number of rolls.
- the number to round by is 429496.7295
- they use hash sha512
- seeds or in this order nonce:seed:nonce
- they take the first 8 chars from the hash and convert hexdec
-
EDIT: I found my error in the code, it now finds 10,000... lol <?php $fast = 1; // 1 = only print if 9999 or 10000 hits, 0 = prints a wall of numbers rolled $tries = 10000; // will work at 20000 if $fast is set to 1, the wall can time out
$c=1;// Iteration count do { $nonce = $c; $s_seed = server_string(); // 12 char server seed string $c_seed = client_string(); // 16 char client seed string $rnd = 429496.7295; // number provided to round by
$nhash = hash_hmac('sha512',"$nonce:$s_seed:$nonce","$nonce:$c_seed:$nonce",false); // hash server and client seeds $result = hexdec(mb_substr($nhash, 0, 8 ))/$rnd; // get first 8 chars and hex to dec $result = ceil($result);
if ($fast == 0) { switch (true) { case ($result == 10000) : $txtcol = '#DBA901'; break; case is_between($result, 0, 9885) : $txtcol = '#58D3F7'; break; case is_between($result, 9886, 9985) : $txtcol = '#0000FF'; break; case is_between($result, 9986, 9993) : $txtcol = '#DF01D7'; break; case is_between($result, 9994, 9997) : $txtcol = '#000000'; break; case is_between($result, 9998, 9999) : $txtcol = '#FE2E2E'; break; }
echo '<font color="', $txtcol, '">', str_pad($result, 5, 0, STR_PAD_LEFT), '</font> '; if ($c % 20 == 0) echo '<br />'; } else { if (is_between($result, 9998, 9999)) { echo '{"9999" [{"Client": "', $c_seed, '", "Server": "', $s_seed, '", "nonce": "', $c, '"}]<br />'; } if ($result == 10000) { echo '{"10000" [{"Client": "', $c_seed, '", "Server": "', $s_seed, '", "nonce": "', $c, '"}]<br />'; $c=$tries; } } $c++; } while ($c <= $tries);
function is_between($in, $min, $max) { return ($in >= $min && $in <= $max); } function make_rand($l,$h) { mt_srand(make_seed()); return mt_rand($l,$h); } function make_seed() { list($usec,$sec) = explode(' ', microtime()); return (float) $sec + ((float) $usec * 65536); } //convert from javascript example posted in forum function client_string () { $charSet = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789'; $strlen = strlen($charSet); $ranStr = null;
for ($i = 0; $i < 16; $i++) { mt_srand(make_seed()); $ranStr[] = substr($charSet, mt_rand(0, strlen($charSet)), 1); } return implode($ranStr,''); } function server_string () { $charSet = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789'; $strlen = strlen($charSet); $ranStr = null;
for ($i = 0; $i < 12; $i++) { mt_srand(make_seed()); $ranStr[] = substr($charSet, mt_rand(0, strlen($charSet)), 1); } return implode($ranStr,''); } ?> I still don't care if 10000 can never be rolled, or is extremely rare, the chance of rolling 9999.5 should be in there! I don't even see why the faucets need to prove they are fair, they are handing out free bitcoins!!! {"9999" [{"Client": "yBJCif46twMVNqVF", "Server": "VBdykfilZuHA", "nonce": "5621"}] {"9999" [{"Client": "SgpGWZN7WH9tDUPa", "Server": "0axDh7i3YIPk", "nonce": "6195"}] {"9999" [{"Client": "WDSZNtGRNNYWtjCF", "Server": "dugXiwEuaKTb", "nonce": "6501"}] {"10000" [{"Client": "HEfA59fGNw8ykriA", "Server": "t2BhGDCyaJG3", "nonce": "9791"}] EDIT: I forgot to say, freebitco.in and the dogecoin actually pay! I haven't withdrawn my doge coins, but if they paid the bitcoins i'm sure they will pay the doge coins too! some faucets just don't pay, they are there for fun/annoyance lol
|
|
|
|
Aquilo
Newbie
Offline
Activity: 8
Merit: 0
|
|
June 25, 2014, 12:19:47 AM |
|
lol, so after seeing that the page to validate was a few posts before mine, i was able to somewhat get the script to produce what would be valid. SERVER SEED: zV2BTdf6OYIX SERVER SEED HASH: 0428f1308997618bfc6fa57cdf9d9bc30df7d9a3cf4c29edbbdce7284c3a6f2e CLIENT SEED: cxJ1OK2JBAzV9gy0 NONCE: 10 Validates @ http://roll-verifier.s3-website-us-east-1.amazonaws.com/I'm not going to update the code, it does fine to show that rolling 10,000 is possible. and since I've never even won the 2nd tier prize, the seeds my script made show that it can happen! EDIT: correction, I've never gotten the 2nd tier prize on the free bitcoin page but I have on the free doge coin page. still that seed comdo it from the test script...
|
|
|
|
wetsuit (OP)
Legendary
Offline
Activity: 981
Merit: 1026
|
|
June 25, 2014, 12:08:34 PM |
|
I really don't mind if the top paying number is unreachable or not, they give FREE bitcoins/doge coins and that is something they don't have to do. But I'm very happy they do!!! But I love to tinker, so i make a script to test this out... a fast run will print something like this... {"9999" [{"Client": "Bb2X2OHbnoDdYxnJ", "Server": "OrGqUxpBuKFg", "nonce": "2014"}] {"9999" [{"Client": "EROQqsMbdG6OeKp", "Server": "JDz5mY6qcmLi", "nonce": "3821"}] {"9999" [{"Client": "R3ZVaapxrpNFtlWK", "Server": "nZELaYrdcaEu", "nonce": "4360"}] {"9999" [{"Client": "sb73Ls2O9kYIkZOB", "Server": "NViuHQev34p", "nonce": "8525"}] Tried 10000 times... 10k never found. if fast is set to 0 it returns every number rolled... so, this isn't their script so I can't get the last roll number to work from their site, this is just to see if it's even possible to get 10,000 to roll... and out of the insane number of times I've run this, I've never gotten 10,000... but from my code block above, 9999 is found often! I don't normally like to share code, but it's been 10 years since the last time I've shared... open source made me bitter lol. but this is easy code nothing to it... As I was saying this isn't like their code, there is something different in they way they hash the 2 seeds together, but this uses all the info available to just try and see if rolling 10k is possible. info known: - player seed is 16 char long, code converted from JS example.
- last roll server seed was 12 char long, going with that.
- the nonce seems to progress with the number of rolls.
- the number to round by is 429496.7295
- they use hash sha512
- seeds or in this order nonce:seed:nonce
- they take the first 8 chars from the hash and convert hexdec
-
EDIT: I found my error in the code, it now finds 10,000... lol <?php $fast = 1; // 1 = only print if 9999 or 10000 hits, 0 = prints a wall of numbers rolled $tries = 10000; // will work at 20000 if $fast is set to 1, the wall can time out
$c=1;// Iteration count do { $nonce = $c; $s_seed = server_string(); // 12 char server seed string $c_seed = client_string(); // 16 char client seed string $rnd = 429496.7295; // number provided to round by
$nhash = hash_hmac('sha512',"$nonce:$s_seed:$nonce","$nonce:$c_seed:$nonce",false); // hash server and client seeds $result = hexdec(mb_substr($nhash, 0, 8 ))/$rnd; // get first 8 chars and hex to dec $result = ceil($result);
if ($fast == 0) { switch (true) { case ($result == 10000) : $txtcol = '#DBA901'; break; case is_between($result, 0, 9885) : $txtcol = '#58D3F7'; break; case is_between($result, 9886, 9985) : $txtcol = '#0000FF'; break; case is_between($result, 9986, 9993) : $txtcol = '#DF01D7'; break; case is_between($result, 9994, 9997) : $txtcol = '#000000'; break; case is_between($result, 9998, 9999) : $txtcol = '#FE2E2E'; break; }
echo '<font color="', $txtcol, '">', str_pad($result, 5, 0, STR_PAD_LEFT), '</font> '; if ($c % 20 == 0) echo '<br />'; } else { if (is_between($result, 9998, 9999)) { echo '{"9999" [{"Client": "', $c_seed, '", "Server": "', $s_seed, '", "nonce": "', $c, '"}]<br />'; } if ($result == 10000) { echo '{"10000" [{"Client": "', $c_seed, '", "Server": "', $s_seed, '", "nonce": "', $c, '"}]<br />'; $c=$tries; } } $c++; } while ($c <= $tries);
function is_between($in, $min, $max) { return ($in >= $min && $in <= $max); } function make_rand($l,$h) { mt_srand(make_seed()); return mt_rand($l,$h); } function make_seed() { list($usec,$sec) = explode(' ', microtime()); return (float) $sec + ((float) $usec * 65536); } //convert from javascript example posted in forum function client_string () { $charSet = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789'; $strlen = strlen($charSet); $ranStr = null;
for ($i = 0; $i < 16; $i++) { mt_srand(make_seed()); $ranStr[] = substr($charSet, mt_rand(0, strlen($charSet)), 1); } return implode($ranStr,''); } function server_string () { $charSet = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789'; $strlen = strlen($charSet); $ranStr = null;
for ($i = 0; $i < 12; $i++) { mt_srand(make_seed()); $ranStr[] = substr($charSet, mt_rand(0, strlen($charSet)), 1); } return implode($ranStr,''); } ?> I still don't care if 10000 can never be rolled, or is extremely rare, the chance of rolling 9999.5 should be in there! I don't even see why the faucets need to prove they are fair, they are handing out free bitcoins!!! {"9999" [{"Client": "yBJCif46twMVNqVF", "Server": "VBdykfilZuHA", "nonce": "5621"}] {"9999" [{"Client": "SgpGWZN7WH9tDUPa", "Server": "0axDh7i3YIPk", "nonce": "6195"}] {"9999" [{"Client": "WDSZNtGRNNYWtjCF", "Server": "dugXiwEuaKTb", "nonce": "6501"}] {"10000" [{"Client": "HEfA59fGNw8ykriA", "Server": "t2BhGDCyaJG3", "nonce": "9791"}] EDIT: I forgot to say, freebitco.in and the dogecoin actually pay! I haven't withdrawn my doge coins, but if they paid the bitcoins i'm sure they will pay the doge coins too! some faucets just don't pay, they are there for fun/annoyance lol Thank you very much for running the tests!
|
|
|
|
Luror
|
|
June 25, 2014, 06:22:29 PM |
|
but from my code block above, 9999 is found often!
It's because theoretically the probability to roll "9999" is 1/10000 and the probability to roll "10000" is 1/20000 (and you make only 10 000 tries, which is not enough to test small probabilities like those). Can you make 100 000 or even 1 000 000 tries? That would be interesting
|
BTC: 1DzAEtLoFxqmJoNH5ZYHyWxaSNYUGKf2S6
|
|
|
Bizmark13
|
|
June 26, 2014, 12:09:46 AM |
|
Users can now request a manual withdrawal by clicking on the MANUAL WITHDRAWAL button in the FREE PLAY page. The minimum amount required for a manual withdrawal is only 0.00006000 BTC and manual withdrawals will carry a fee of only 0.00000400 BTC!
Thanks! I've been waiting for something like this. Your other site, Freedoge.co.in had this option for a while now and it worked quite well.
|
|
|
|
Aquilo
Newbie
Offline
Activity: 8
Merit: 0
|
|
June 26, 2014, 03:56:21 AM |
|
but from my code block above, 9999 is found often!
It's because theoretically the probability to roll "9999" is 1/10000 and the probability to roll "10000" is 1/20000 (and you make only 10 000 tries, which is not enough to test small probabilities like those). Can you make 100 000 or even 1 000 000 tries? That would be interesting I have streamlined the code to just do counts, printing 100k rolls in a browser is going to be murder on your computer, lol and you can get the script to count to 1 million but not in a browser, the browser itself will time out if you run it from a php console window it should count as high as you want. 10k tries: Jackpots: 1 10000 prize: 3 0000-9885: 9891 9886-9985: 89 9986-9993: 6 9994-9997: 5 9998-9999: 6 100k times: Jackpots: 11 10000 prize: 9 0000-9885: 98874 9886-9985: 973 9986-9993: 85 9994-9997: 36 9998-9999: 23
second run... Jackpots: 8 10000 prize: 10 0000-9885: 98957 9886-9985: 914 9986-9993: 71 9994-9997: 35 9998-9999: 13 <?php set_time_limit(360); // number of seconds to run script, default is 30
$_jackpot = $_10k_pz = $_prize1 = $_prize2 = $_prize3 = $_prize4 = $_prize5 = 0; $tries = 100000; //Number of tires $c=1;// Iteration count do { // nonce = $c; // 12 char server seed string, 16 char client seed string $nhash = hash_hmac('sha512',$c.':'.seed_string(12).':'.$c,$c.':'.seed_string(16).':'.$c,false); $_no = ceil(hexdec(mb_substr($nhash, 0, 8 ))/429496.7295);
$_jackpot += ($_no == 8888); $_10k_pz += ($_no == 10000); $_prize1 += ($_no >= 0 && $_no <= 9885); $_prize2 += ($_no >= 9886 && $_no <= 9985); $_prize3 += ($_no >= 9986 && $_no <= 9993); $_prize4 += ($_no >= 9994 && $_no <= 9997); $_prize5 += ($_no >= 9998 && $_no <= 9999);
$c++; } while ($c <= $tries); echo '<pre> [Counts out of ', $tries, ' tries] Jackpots: ', $_jackpot, ' 10000 prize: ', $_10k_pz, ' 0000-9885: ', $_prize1, ' 9886-9985: ', $_prize2, ' 9986-9993: ', $_prize3, ' 9994-9997: ', $_prize4, ' 9998-9999: ', $_prize5, ' </pre>';
function make_rand($l,$h) { mt_srand(make_seed()); return mt_rand($l,$h); } function make_seed() { list($usec,$sec) = explode(' ', microtime()); return (float) $sec + ((float) $usec * 65536); } function seed_string ($itr) { $charSet = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789'; $ranStr = null;
for ($i = 0; $i < $itr; $i++) { mt_srand(make_seed()); $ranStr[] = substr($charSet, mt_rand(0, strlen($charSet)), 1); } return implode($ranStr,''); } ?>
|
|
|
|
|