Visualizzazione dei risultati da 1 a 8 su 8

Discussione: Ponderare il random

  1. #1
    Utente di HTML.it
    Registrato dal
    Mar 2003
    Messaggi
    393

    Ponderare il random

    Salve a tutti,
    per far uscire i banner uso la funzione array_rand di php.

    Quello che volevo sapere è se è possibile mantenere il random ma specificare in che percentuale si deve favorire l'uscita di un banner.

    Ossia:
    Io voglio che escano in modo casuale, ma voglio che il numero 1 esca il 66% delle volte, il 2 il 20%, il 3 il 14%.

    Grazie

  2. #2
    Utente di HTML.it
    Registrato dal
    Mar 2003
    Messaggi
    393
    Vi posto qui il codice che uso:

    Codice PHP:
    $hrarray = array(
    => '[img]images/home/homepage_banner_a.gif[/img]',
    => '[img]images/home/homepage_banner_b.gif[/img]',
    => '[img]images/home/homepage_banner_c.gif[/img]'
    );
    srand((float) microtime() * 10000000);
    $hchiavi array_rand($hrarray2); 

  3. #3
    Utente di HTML.it
    Registrato dal
    Mar 2003
    Messaggi
    393
    Domanda:

    E' possibile strutturare un array in questo modo?

    Codice PHP:
    $array = array( 
    1/66 => '[img]images/home/homepage_banner_a.gif[/img]'
    67/87 => '[img]images/home/homepage_banner_b.gif[/img]'
    88/100 => '[img]images/home/homepage_banner_c.gif[/img]' 
    ); 
    1/66 sicuramente non sarà il modo giusto (se esiste) di scriverlo, ma insomma il senso credo sia chiaro. Si può fare?

  4. #4
    Utente di HTML.it
    Registrato dal
    Mar 2003
    Messaggi
    393
    E sei io riempissi un array con dei cicli per 66 volte con il primo, per 20 volte con il secondo e 14 volte per il terzo?l

  5. #5
    Utente di HTML.it
    Registrato dal
    Jul 2006
    Messaggi
    18
    è la risposta che stavo per darti.

  6. #6
    In questo caso i numeri sono divisibili per 2...
    66 diventa 33
    20 diventa 10
    14 diventa 7

    Così le probabilità sono le stesse, ma risparmi di scrivere il doppio delle righe :P


    Comunque fai questo solo se non riesci a trovare un altro metodo migliore

  7. #7
    Utente di HTML.it
    Registrato dal
    Jul 2006
    Messaggi
    18
    questa mi sà che fà al caso tuo link

  8. #8
    Utente di HTML.it
    Registrato dal
    Mar 2003
    Messaggi
    393
    Sì, grazie, credo di sì...solamente non riesco bene a comprenderlo totalmente nella seconda parte, qualcuno mi può aiutare a capirlo please?
    Mi sono oscure sopratutto le ultime due righe di codice...

    Codice PHP:
    Here's an algorithm to make a weighted selection of an item from an array. 
    Say we have an array $items with keys as items and values as corresponding weights.
    For example:
    <?php
    $items 
    = array(
       
    item1 => 3,
       
    item2 => 4,
       
    item3 => 5,
    );
    ?>
    i.e. we want to choose item1 25% of the time, item2 33.3% of the time and item3 41.6% of the time.
    Here's a function that works when the weights are positive integers:
    <?php
    function array_rand_weighted($values) {
       
    $r mt_rand(1array_sum($values));
       foreach (
    $values as $item => $weight) {
           if  (
    $r <= $weight) return $item;
           
    $r -= $weight;
       }
    }
    ?>

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.