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 * |
#2 · Zasláno: 24. 2. 2012, 20:18:14
Ja by som to zoradil a porovnal po sebe nasledujúce hodnoty.
|
||
Tori Profil |
#3 · Zasláno: 24. 2. 2012, 20:24:28
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)."%"; // 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 |
#5 · Zasláno: 24. 2. 2012, 21:43:03
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 |
#6 · Zasláno: 24. 2. 2012, 22:27:56
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(). ;) |
||
Časová prodleva: 11 let
|
0