Visualizzazione dei risultati da 1 a 9 su 9

Discussione: Calcolare possibilità

  1. #1
    Utente di HTML.it
    Registrato dal
    Feb 2010
    Messaggi
    77

    Calcolare possibilità

    Ciao.
    Ho un campo Y con due valore composti da due lettere (es 11 22) che voglio incrociare in modo da avere le quattro possibilità (12 12 12 12)...come posso fare? substr?

    Parallelamente ho la stessa cosa Z con le lettere (es aa bb) che incrociandole mi da le quattro possibilità (ab ab ab ab)

    Una volta che ho queste due cose vorrei che mi restituisse una cosa tipo
    Y x Z --> 100% 12ab


    es2:
    Y (02 22)
    Z (aa bb)
    Y x Z --> 50% 02ab
    50% 22ab

    Come potrei fare?
    Grazie come sempre

  2. #2
    Utente di HTML.it
    Registrato dal
    Feb 2010
    Messaggi
    77
    Ho risolto la prima parte così (mettere zero se l'altro valore è selezionato), probabilmente si può semplificare.....
    codice:
    <form action="#" method="post">
    Y
    <input type="radio" name="y1" id="y1" value="11" />
    <input type="radio" name="y2" id="y2" value="22" />
    Z
    <input type="radio" name="z1" id="z1" value="aa" />
    <input type="radio" name="z2" id="z2" value="bb" />
    <input type="submit" value="invia" />
    </form>
    Codice PHP:
    /* Per Y, guardo se il primo è definito, se lo è anche il secondo ok, altrimenti il secondo = 0 */
    if (isset($_POST['y1'])) {
    if (isset(
    $_POST['y2'])) {
    $y1=$_POST['y1'];
    $y2=$_POST['y2'];
    }else{
    $y2="0";
    }
    }
    /* Per Y, idem, ma contrario */
    if (isset($_POST['y2'])) {
    if (isset(
    $_POST['y1'])) {
    $y2=$_POST['y2'];
    $y1=$_POST['y1'];
    }else{
    $y1="0";
    }
    }
    /* Per Z */
    if (isset($_POST['z1'])) {
    if (isset(
    $_POST['z2'])) {
    $z1=$_POST['z1'];
    $z2=$_POST['z2'];
    }else{
    $z2="0";
    }
    }
    /* Per Z */
    if (isset($_POST['z2'])) {
    if (isset(
    $_POST['z1'])) {
    $z2=$_POST['z2'];
    $z1=$_POST['z1'];
    }else{
    $z1="0";
    }

    Posso semplificare? Come faccio ora a fare l'incrocio/cross? Devo definire una funzione? ...uhm..

  3. #3
    non mi è molto chiaro cosa dovrebbe fare questa operazione: Y x Z
    IP-PBX management: http://www.easypbx.it

    Old account: 2126 messages
    Oldest account: 3559 messages

  4. #4
    Utente di HTML.it
    Registrato dal
    Feb 2010
    Messaggi
    77
    è un incrocio, come in genetica, Mendel.

  5. #5
    Utente di HTML.it L'avatar di bubi1
    Registrato dal
    Dec 2009
    Messaggi
    1,230

    Re: Calcolare possibilità

    Originariamente inviato da gphp
    es2:
    Y (02 22)
    Z (aa bb)
    Y x Z --> 50% 02ab
    50% 22ab
    se la memoria non m'inganna, questo non dovrebbe essere corretto se parliamo delle probabilita' di mendel. Il carattere dominante dovrebbe avere un bel 75% alla prima generazione, quindi non puoi fare semplici calcoli combinatorici..

  6. #6
    Utente di HTML.it
    Registrato dal
    Feb 2010
    Messaggi
    77
    Mendel brevemente diceva che partendo da due caratteri aa bb alla prima generazione si avevano ab ab ab ab e questi, se accoppiati tra loro, restituivano i caratteri aa bb ab ab.

  7. #7
    Utente di HTML.it L'avatar di bubi1
    Registrato dal
    Dec 2009
    Messaggi
    1,230
    quindi se fosse ipoteticamente:
    Y (01 23)
    Z (aa bb)

    a te serve questo risultato finale:

    Y x Z --> 25% 02ab
    25% 03ab
    25% 12ab
    25% 13ab

    ?

  8. #8
    Utente di HTML.it
    Registrato dal
    Feb 2010
    Messaggi
    77
    esatto..

  9. #9
    Utente di HTML.it L'avatar di bubi1
    Registrato dal
    Dec 2009
    Messaggi
    1,230
    ecco qua. Tieni presente che il codice e' molto grezzo, manca il controllo delle variabili, ottimizzazioni, etc, ho fatto la cosa piu' veloce possibile, per arrivare alla parte delle combinazioni che mi interessava di piu
    Ma dovrebbe andarti bene come punto di partenza.

    Codice PHP:
    <form method="post">
    Y1
    <input name="d[]"/>
    Y2
    <input name="d[]" />


    Z1
    <input name="d[]" />
    Z2
    <input name="d[]"/>


    <input type="submit" value="invia" />
    </form>

    <?php
    $d 
    array_map('trim',$_POST['d']);
    if(
    array_search('',$d) !== false){
      die(
    'tutti i campi sono obbligatori');
    }
    $d array_map('str_split',$d);
    list(
    $y1$y2$z1$z2) = $d;

    $combs1 $combs2 $final = array();

    foreach(
    $y1 as $e1){
      foreach(
    $y2 as $e2){
        
    $combs1[] = $e1.$e2;
      }
    }

    foreach(
    $z1 as $e1){
      foreach(
    $z2 as $e2){
        
    $combs2[] = $e1.$e2;
      }
    }

    foreach(
    $combs1 as $e1){
      foreach(
    $combs2 as $e2){
        
    $final[$e1.$e2] = $e1.$e2;
      }
    }

    echo 
    'Combinazione Y: 'implode(' ',$combs1)."
    \n"
    ;
    echo 
    'Combinazione Z: 'implode(' ',$combs2)."
    \n"
    ;
    echo 
    'Combinazione Finale: 'implode(' ',$final)."

    \n"
    ;

    echo 
    "Probabilita: 
    "
    ;
    $t count($final);
    foreach(
    $final as $f){
      echo 
    100/$t.'% '.$f."
    \n"
    ;
    }

    ?>

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.