Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 11

Discussione: Evento probabilistico

  1. #1
    Utente di HTML.it
    Registrato dal
    Feb 2008
    Messaggi
    813

    Evento probabilistico

    Ciao a tutti,sto creando un sito in cui gli utenti possono ottenere degli "oggetti" con una determinata probabilita'. A prescindere che quello che mi serve varrebbe comunque per ogni linguaggio di programmazione, ma nella fattispecie mi interessa per PHP.A ogni modo, il caso d'uso sarebbe che utente "tenta la fortuna" una volta ogni tot minuti e dica (facendo un esempio) "Hai Vinto" oppure "Ritenta" con una certa probabilita'.Io avevo pensato a questo algoritmo, ma mi sembra molto naive e vorrei delle opinioni a riguardo.Supponiamo che la probabilita' di vittoria sia del 25 percento (si vince una volta su 4):
    codice:
    $a = rand(0,getrandmax());
    $a/= getrandmax();
    
    if ($a<0.25) echo "Hai Vinto";
    else echo "Ritenta!";
    Ultima modifica di Hysoka; 16-02-2014 a 20:48
    Nell'anno 1968 è bastata la potenza di due Commodore 64 per lanciare con successo una navicella sulla Luna; nell'anno 2007 ci vogliono la potenza di un processore quad core 3.30 GHz e 3 Gb di RAM (requisiti minimi ufficiali) per utilizzare Windows Vista. Qualcosa deve essere andato storto!

  2. #2
    Moderatore di PHP L'avatar di Alhazred
    Registrato dal
    Oct 2003
    Messaggi
    12,503
    Il codice che hai postato è troncato.
    Per riproporlo, usa il tag [php] e prima di inviarlo visualizza l'anteprima per accertarti che sia ben formattato.

  3. #3
    Utente di HTML.it
    Registrato dal
    Feb 2008
    Messaggi
    813
    Si ho fatto. Sono dovuto rientrare con Firefox perche il wysiwyg non va con chrome
    Nell'anno 1968 è bastata la potenza di due Commodore 64 per lanciare con successo una navicella sulla Luna; nell'anno 2007 ci vogliono la potenza di un processore quad core 3.30 GHz e 3 Gb di RAM (requisiti minimi ufficiali) per utilizzare Windows Vista. Qualcosa deve essere andato storto!

  4. #4
    Moderatore di PHP L'avatar di Alhazred
    Registrato dal
    Oct 2003
    Messaggi
    12,503
    Sicuro che ci sia il 25% di probabilità che i conti che fai diano un valore <0.25 (non ho voglia di fare conti adesso)

    Comunque un sistema che sicuramente ti da il 25% è questo
    Codice PHP:
    $a rand(1,10);

    if (
    $a >= 0.25//se esce 1,2,3 o 4
    {
        echo 
    'Hai vinto';
    }
    else 
    //se esce 5,6,7,8,9, o 10
    {
        echo 
    'Ritenta!';


  5. #5
    Utente di HTML.it L'avatar di luca200
    Registrato dal
    Apr 2002
    Messaggi
    4,120
    Quote Originariamente inviata da Alhazred Visualizza il messaggio
    Comunque un sistema che sicuramente ti da il 25% è questo
    Probabilmente sì, se inverti il segno del test
    Comunque starei attento a usare numeri in virgola mobile, non è che per caso 1/4 viene 0,250001 e ti sballa tutto? Perché non usare direttamente l'output di rand()?

  6. #6
    Moderatore di PHP L'avatar di Alhazred
    Registrato dal
    Oct 2003
    Messaggi
    12,503
    Se hai paura di eventuali risultati strani puoi arrotondare e fare
    $a = round( 1 / rand(1,10), 2 );
    così sei sicuro che dopo la seconda cifra decimale non c'è nulla.

    Ovviamente anche usare direttamente il valore di rand() funzionerebbe
    Codice PHP:
    $a rand(1,10);

    if (
    $a == || $a == || $a == || $a == 4)
    {
        echo 
    'Hai vinto';
    }
    else
    {
        echo 
    'Riprova!';


  7. #7
    Utente di HTML.it L'avatar di luca200
    Registrato dal
    Apr 2002
    Messaggi
    4,120
    Ehm .... il tuo sistema in realtà dà il 40% di vincite, non il 25%...
    Codice PHP:
    $a rand(1,4);

    if (
    $a == 1)
    {
        echo 
    'Hai vinto';
    }
    else
    {
        echo 
    'Riprova!';


  8. #8
    Moderatore di PHP L'avatar di Alhazred
    Registrato dal
    Oct 2003
    Messaggi
    12,503
    Hai ragione, stavo ancora pensando alla divisione

  9. #9
    Utente di HTML.it
    Registrato dal
    Feb 2008
    Messaggi
    813
    non vorrei interrompere il vostro entusiamo, ma la soluzione proposta da Alhazred (1/x) credo che violi la condizione di equiprobabilita', poiche' la curva di quel rapporto fa cose strane vicino allo zero
    Nell'anno 1968 è bastata la potenza di due Commodore 64 per lanciare con successo una navicella sulla Luna; nell'anno 2007 ci vogliono la potenza di un processore quad core 3.30 GHz e 3 Gb di RAM (requisiti minimi ufficiali) per utilizzare Windows Vista. Qualcosa deve essere andato storto!

  10. #10
    Utente di HTML.it L'avatar di luca200
    Registrato dal
    Apr 2002
    Messaggi
    4,120
    Infatti la soluzione giusta è l'ultima

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.