Autor Zpráva
nemeja
Profil
Dobrý den,
mám pole dejme tomu o velikosti 1000 položek do kterého vytvářím pomocí funkce rand(0,1000) hodnoty. A ted bych potřeboval projet celé pole a vypsat procentuálni šanci na úspěšnost, že budou minimálně 2 stejná čísla. Děkuji předem
Giga
Profil *
Ja by som to zoradil a porovnal po sebe nasledujúce hodnoty.
Tori
Profil
nemeja:
Možná se vám hodí funkce array_count_values.
nemeja
Profil
Tak jsem to vyřešil nakonec takto:
$array = array();
$value = 1000000;
for($i=0;$i<$value;$i++)
{
  array_push($array, mt_rand(0,$value-1));  
}
echo ((count($array)-count((array_unique($array))))/100)."%";
Děkuji všem co mi pomohli.

// EDIT 1:
Když jsem zkusil $value = 1000000000000000;.
Tak my vyjely tyhle errory:
Warning: mt_rand() [<a href='function.mt-rand'>function.mt-rand</a>]: max(-1530494977) is smaller than min(0) in C:\wamp\www\OOP\index.php on line 28

// EDIT 2:
Vím, bylo to tím, že jsem překročil maximální limit funkcí. Je nějaká funkce pro větší hodnoty?
Majkl578
Profil
nemeja:
Vím, bylo to tím, že jsem překročil maximální limit funkcí.
Ne, překročil jsi maximální velikost int. Ta se liší na 32 a 64 bitových systémech. Na 32bitových je to číslo v rozmezí -2 147 483 648 až 2 147 483 647 [tj.: -(2^31) až 2^31-1]. Na 64bitových je to -9 223 372 036 854 775 808 až 9 223 372 036 854 775 807 [tj: -(2^63) až 2^63−1].
nemeja
Profil
Majkl578:
Ne, překročil jsi maximální velikost int.
Ne, mám 64bit systém => vejdu se tím intem. Opravdu jsem překročil max. mt_rand, to si můžeš ověřit pomocí mt_getrandmax, nebo pro rand() getrandmax(). ;)

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm:

0