Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 20
  1. #1

    [PHP] Distribuzione valore su array impostando un range

    Ciao raga.
    scrivo qui per chiedervi aiuto su come potrei fare a creare una funzione del genere:

    Supponendo di avere un array composto da 100 variabili , e una $variabile con un valore (es 800)
    vorrei che il valore contenuto nella variabile venga smistato in tutto l'array, MA impostando un range per ogni array (0- 100)
    esempio

    array(0) = 0
    array(1) = 100
    array(3) = 73
    array(4) = 11
    ...
    ...
    ..
    TOTALE VALORE ARRAY = 800

    come potrei fare? anche per effettuare una ricerca, non saprei proprio cosa cercare!! ho provato anche a cercare
    "Ordinamento randomizzato per distribuzione" .. ma non mi è stato di aiuto. grazieeee

  2. #2
    Utente di HTML.it L'avatar di .Kurt
    Registrato dal
    Jul 2007
    Messaggi
    654
    Genera un valore random tra 0 e 100, aggiungilo al tuo array, sottrailo alla variabile che contiene il tuo valore da distribuire (800). Appena quel valore (800) diventa minore del valore random massimo che si può generare (100), sostituiscilo in modo tale che i successivi numeri random siano generati tra 0 ed il numero rimanente da distribuire.

    Ci metto più a spiegarlo che a scrivere il codice. Fai un tentativo, e se non funziona postalo qui.

  3. #3
    Quote Originariamente inviata da .Kurt Visualizza il messaggio
    Genera un valore random tra 0 e 100, aggiungilo al tuo array, sottrailo alla variabile che contiene il tuo valore da distribuire (800). Appena quel valore (800) diventa minore del valore random massimo che si può generare (100), sostituiscilo in modo tale che i successivi numeri random siano generati tra 0 ed il numero rimanente da distribuire.

    Ci metto più a spiegarlo che a scrivere il codice. Fai un tentativo, e se non funziona postalo qui.

    Ciao e grazie per la risposta tempestiva. . Non credo che questo sistema sia affidabile... vedo di farti un esempio:
    Array di ESATTAMENTE 100 VAR. Che possono avere un valore compreso da 0 a 100
    una variabile da distribuire = 800
    Metti che arrivi ad assegnare la 99° var dell'array e il sistema mi ha distribuito solo 500 degli 800 mi rimarrebbe (nel migliore dei casi) 200 non assegnati... e nn deve succedere. ..

  4. #4
    Prima di tutto mettiamoci d'accordo sulla nomenclatura altrimenti non ci si intende:

    Quote Originariamente inviata da master87 Visualizza il messaggio
    Supponendo di avere un array composto da 100 variabili

    Cosa intendi con "composto da 100 variabili" forse intendi un array di dimensione 100?



    Quote Originariamente inviata da master87 Visualizza il messaggio
    MA impostando un range per ogni array (0- 100)
    esempio

    array(0) = 0
    array(1) = 100
    array(3) = 73
    array(4) = 11

    Cosa significa "impostando un range per ogni array"?
    "Mai discutere con un idiota. Ti trascina al suo livello e ti batte con l'esperienza." (Oscar Wilde)

  5. #5
    Quote Originariamente inviata da satifal Visualizza il messaggio
    Prima di tutto mettiamoci d'accordo sulla nomenclatura altrimenti non ci si intende:




    Cosa intendi con "composto da 100 variabili" forse intendi un array di dimensione 100?






    Cosa significa "impostando un range per ogni array"?
    Si scusa.. impostando un val. Minimo e massimo (0,100) per ogni variabile dell'array

  6. #6
    Quote Originariamente inviata da master87 Visualizza il messaggio
    Si scusa.. impostando un val. Minimo e massimo (0,100) per ogni variabile dell'array
    Anche così non si capisce bene. L'intervallo di valori vale per tutto l'array, cioè se imposto (0, 100) significa che in ogni locazione dell'array posso inderire valori compresi tra 0 e 100 oppure si può dichiarare un intervallo differente per ciascuna posizione?

    P.S.
    Inoltre la distribuzione dei valori all'interno dell'array deve seguire una qualche regola oppure inizio dalla posizione 0 ed inserisco valori fino all'esaurimento?
    "Mai discutere con un idiota. Ti trascina al suo livello e ti batte con l'esperienza." (Oscar Wilde)

  7. #7
    Quote Originariamente inviata da satifal Visualizza il messaggio
    Anche così non si capisce bene. L'intervallo di valori vale per tutto l'array, cioè se imposto (0, 100) significa che in ogni locazione dell'array posso inderire valori compresi tra 0 e 100 oppure si può dichiarare un intervallo differente per ciascuna posizione?

    P.S.
    Inoltre la distribuzione dei valori all'interno dell'array deve seguire una qualche regola oppure inizio dalla posizione 0 ed inserisco valori fino all'esaurimento?
    Ogni singola posizione dell'array può contenere un valore da 0 a 100

  8. #8
    Ripeto l'esempio.. un array (A) di 100 elementi
    puo contenere un valore random da 0 a 100

    In una variabile singola "x" è definito un valore (es. 800)

    Nell'array deve essere versata per intero la var X distribuendola in maniera casuale es
    $A (0) = 30;
    $A (1) = 100;
    ...
    $A (154) = 75
    $A (176) = 0;

    LA SOMMA DEI VALORI IMMESSI NELL'ARRAY DEVE ESSERE = ALLA VAR X

  9. #9
    Utente di HTML.it L'avatar di cassano
    Registrato dal
    Aug 2004
    Messaggi
    3,002
    Scusa ma 100 elementi non vanno da 0 a 99 ?

  10. #10
    Probabilmente si può fre anche in maniera più performante ma ho buttato giù la prima cosa che mi è venuta in mente:

    Codice PHP:
    <?php
    function distributor($valueToDistrubute$maxValue$arrayDimension) {
        
    $arr = array();
        for (
    $i 0$i $arrayDimension$i++) {
            if (
    $valueToDistrubute $maxValue) {
                
    $maxValue $valueToDistrubute;
            }
            
    $value rand(0$maxValue);
            
    $arr[] = $value
            
    $valueToDistrubute -= $value;
        }
        
    shuffle($arr);
        return 
    $arr;
    }

    $a distributor(800100100);
    for(
    $i 0$i 100$i++) {
        echo 
    $i." - ".$a[$i]."<br/>";
    }
    ?>
    "Mai discutere con un idiota. Ti trascina al suo livello e ti batte con l'esperienza." (Oscar Wilde)

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.