[PHP] combinazioni semplici

  • Creatore Discussione Creatore Discussione grazdeg
  • Data di inizio Data di inizio

grazdeg

Nuovo Utente
20 Dic 2017
3
0
1
56
Ciao

ho questo script che genera tutte le combinazioni su 30 numeri su 3 numeri.
Qualcuno saprebbe portarmi allo stesso risultato senza usare le 2 function
subcombi e combinations ?



Chiedo perchè se eseguo for ($combx = 2; $combx < 10; $combx++) lo script va in out of memory (troppe combinazioni). Se avessi lo script senza le function , durante l'esecuzione potrei inserire del codice per
escludere molte delle combinazioni elaborate , e questo mi eviterebbe l'out of memory.
Grazie

PHP:
<?

error_reporting( error_reporting() & ~E_NOTICE );
$numeri="01.02.03.04.05.06.07.08.09.10.11.12.13.14.15.16.17.18.19.20.21.22.23.24.25.26.27.28.29.30";

function subcombi($arr, $arr_size, $count)
{
   $combi_arr = array();
   if ($count > 1) {
      for ($i = $count - 1; $i < $arr_size; $i=$i+1) {
         $highest_index_elem_arr = array($i => $arr[$i]);
         foreach (subcombi($arr, $i, $count - 1) as $subcombi_arr)
         {
            $combi_arr[] = $subcombi_arr + $highest_index_elem_arr;
         }
      }
   } else {
      for ($i = $count - 1; $i < $arr_size; $i=$i+1) {
         $combi_arr[] = array($i => $arr[$i]);
      }
   }
 
   return $combi_arr;
}

function combinations($arr, $count)
{
   if ( !(0 <= $count && $count <= count($arr))) {
      return false;
   }
   return $count ? subcombi($arr, count($arr), $count) : array();
}

$numeri_ar=explode(".",$numeri); 
$numeri_ar=array_unique($numeri_ar);


for ($combx = 2; $combx < 4; $combx++)
   {
$combi_arr = combinations($numeri_ar, $combx);
}

print_r($combi_arr);

?>
 
Ultima modifica:
corretto con 29 , non è quello il problema.

Funziona perchè usa

($combx = 2; $combx < 4; $combx++)

ma se provi con

for ($combx = 2; $combx < 18; $combx++)

le combinazioni sono troppe , va in out of memory.

Durante il processo di elaborazione delle combinazioni io vorrei aggiungere del codice
per togliere molte linee ed accettarne solo alcune. Il tutto mi serve per uno studio statistico sul lotto.

Qui spiego con più dettagli
https://stackoverflow.com/questions/47912489/combinations-without-duplicates-using-php
 
Ultima modifica:
le combinazioni di 18 numeri su 30 possibili, sono poco meno di 86.500.000
hai postato un archivio di 5863 campioni,
i campioni rappresentano lo 0,068 % delle possibili combinazioni
qualcosa mi sfugge .... anzi no, il banco vince sempre
 
considerato che (mi sembra) che si parli del gioco dell'otto
qualcosa mi sfugge .... anzi no, il banco vince sempre
una cosa che i "giocatori" non vogliono mettersi in testa
probabilita.jpg
 
ho risolto (pagando un coder) . Avete mai sentito parlare della legge dei grandi numeri e degli scompensi statistici ?. Il banco può essere battuto con una ricerca statistica seria , ovviamente non la mera ricerca del ritardo di un numero. Sapete che con la statistica quei 90 numeri posso essere ridotti a 18-20 validi statisticamente in grado di dare terni e quaterne ? Voi direte si ma non posso giocare 18-20 numeri. D'accordo , ma le statistiche che mostri sopra non devi farle su 90 numeri ma su 18-20 , il banco va in difficoltà quando devi scegliere tra 18-20 numeri e non tra 90 numeri. La mia ricerca cerca le migliori diciottine sui migliori 30 numeri statistici (questi danno cinquine a colpo). Si parla di qualche migliaio di diciottine da convergere per avere i pochi numeri statisticamente migliori. Fino a ieri pensavo che tutto questo tipo di ricerca non si potesse fare (limiti del computer), oggi dopo aver sistemato lo script sopra ho visto che si può fare. Felice.
 
Ultima modifica:

Discussioni simili