Visualizzazione dei risultati da 1 a 9 su 9
  1. #1
    Utente di HTML.it L'avatar di gaten
    Registrato dal
    Jul 2007
    Messaggi
    1,269

    Generare precisamente valori in random

    Salve ragazzi dovrei creare una funzione che mi permetta di fare questo:

    tramite una variabile $_SESSION['max']; devo generare una cosa di questo tipo, in random:

    codice:
    $_SESSION['max'] = 30;
    
    $_SESSION['m1']=15;
    $_SESSION['m2']=11;
    $_SESSION['m3']=4;

    Se notate: 15+11+4=30;

    Devo praticamente distribuire in maniera random dei valori compresi tra 1 e 30, in tre variabili che io ho chiamato m1, m2, m3.

    Ovviamente devo assicurare che non sfori mai e che tutte le variabili abbiano almeno valore 1, cioè posso anchea avere una cosa del tipo:

    codice:
    $_SESSION['max'] = 27;
    
    $_SESSION['m1']=25;
    $_SESSION['m2']=1;
    $_SESSION['m3']=1;
    Qualcuno può aiutarmi?

    P.S Praticamente dovrei creare un array di sessioni, aventi quei valori.
    Grazie
    Con i sogni possiamo conoscere il futuro...

  2. #2
    Utente di HTML.it L'avatar di Luke70
    Registrato dal
    Jul 1999
    Messaggi
    767
    Prima di tutto generi un valore $_SESSION['m1'] random tra 1 e $_SESSION['max']-2

    A questo punto generi $_SESSION['m2'] come valore random tra 1 e $_SESSION['max']-$_SESSION['m1']-1

    $_SESSION['m3'] lo ottieni per differenza

  3. #3
    Utente di HTML.it L'avatar di gaten
    Registrato dal
    Jul 2007
    Messaggi
    1,269
    Che significa lo ottengo per differenza?
    Con i sogni possiamo conoscere il futuro...

  4. #4
    Utente di HTML.it L'avatar di gaten
    Registrato dal
    Jul 2007
    Messaggi
    1,269
    Ho fatto così:

    Codice PHP:
        $_SESSION['num_prodP1']=rand(1, ($_POST['max_prod']-2));
        
    $_SESSION['num_prodP2']=rand(1, ($_POST['max_prod']-($_SESSION['num_prodP1']-1)));
        
    $_SESSION['num_prodP3']=rand(1, ($_POST['max_prod']-$_SESSION['num_prodP2'])); 
    ma non va
    Con i sogni possiamo conoscere il futuro...

  5. #5
    Utente di HTML.it L'avatar di gaten
    Registrato dal
    Jul 2007
    Messaggi
    1,269
    Ho corretto così:

    Codice PHP:
    $_SESSION['num_prodP1']=rand(1, ($_POST['max_prod']-2)); 
    $_SESSION['num_prodP2']=rand(1, ($_POST['max_prod']-($_SESSION['num_prodP1']-1))); 
    $_SESSION['num_prodP3']=rand(1, ($_POST['max_prod']-$_SESSION['num_prodP2'])); 
    Va bene per tutti i valori, solo se inserisco 12, genera:

    8,5 e -1, e non va bene, tutti i valori devono essere positivi!
    Con i sogni possiamo conoscere il futuro...

  6. #6
    Utente di HTML.it L'avatar di LuckySevenRoX
    Registrato dal
    Sep 2011
    residenza
    Foligno
    Messaggi
    361
    codice:
    $_SESSION['num_prodP1']=rand(1, ($_POST['max_prod']-2)); 
    $_SESSION['num_prodP2']=rand(1, (($_POST['max_prod']-$_SESSION['num_prodP1'])-1)); 
    $_SESSION['num_prodP3']=rand(1, ($_POST['max_prod']-$_SESSION['num_prodP2']));
    l'ho visto di fretta, ma pare che hai sbagliato un pò di logica con la parentesi su prodP2.. prova così come l'ho messo io

  7. #7
    Codice PHP:
    $max 30;
    $primo rand(1$max-2);
    $secondo rand(1, ($max-$primo-1));
    $terzo $max-$primo-$secondo// niente rand altrimenti la somma non è sempre la stessa
    echo $primo ' ' .$secondo ' ' .$terzo
    http://www.miniscript.it
    Se ti sono stato di aiuto in qualche modo in questo forum iscriviti alla fan page di Miniscript - il mio blog di programmazione web.

  8. #8
    Utente di HTML.it L'avatar di LuckySevenRoX
    Registrato dal
    Sep 2011
    residenza
    Foligno
    Messaggi
    361
    scusa mi ero dimenticato di editare la terza riga

    $_SESSION['num_prodP3']=$_POST['max_prod']-$_SESSION['num_prodP1']-$_SESSION['num_prodP2'];

  9. #9
    Utente di HTML.it L'avatar di gaten
    Registrato dal
    Jul 2007
    Messaggi
    1,269
    tutto chiaro grazie,

    Nota che le parentesi nella riga due non ci voglio altrimenti alteri aritmeticamente la differenza!
    Con i sogni possiamo conoscere il futuro...

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.