Visualizzazione dei risultati da 1 a 3 su 3
  1. #1

    verifica rand all'interno di un for

    vi pongo questo quesito.

    se io volessi generare migliaia e migliaia di combinazioni numeriche grosse..farei in questo modo

    Codice PHP:
    for($i=0$i<100000000$i++) {
    $combinazione rand(0,9999999999);
    echo
    "$combinazione 
    "
    ;

    in questo modo mi stampa in elenco 100000000 combinazioni numeriche molto grosse.
    e fin qui ci siamo.
    ora se io volessi ke queste combinazioni fossere tutte una diversa dall'altra come dovrei fare?
    io pensato in questo modo

    Codice PHP:
    $simultaneo = array[1000000000];
    $contatore 0;
    for(
    $i=0$i<100000000$i++) {
    $contatore $contatore 1;
    $combinazione rand(0,9999999999);
    $simultaneo[$contatore] = $combinazione;
    if(
    $combinazione == $simultaneo[$contatore]) {
    echo
    "
    } else {
    echo
    "$combinazione 
    "
    ;
    } } 
    secondo voi perkè non va?
    cosa c'è di sbagliato nell'idea?
    http://codecanyon.net/category/all?ref=Manuelandro
    And I bet she told a million people that she'd stay in touch, Well all the little promises they dont mean much,When theres
    memories to be made

  2. #2
    Utente di HTML.it L'avatar di marco80
    Registrato dal
    May 2005
    Messaggi
    1,357
    Ciao, io l'ho penstat cosi':
    Codice PHP:
    $array_numeri_estratti = array();
    for(
    $i=0$i<=100000000$i++) {
        
    $combinazione rand(0,9999999999);
        
    $array_numeri_estratti[] = $combinazione;
        if(!
    in_array($combinazione,$array_numeri_estratti)){
            echo
    "$combinazione 
    "
    ;
        }else{
            
    $i $i-1;    
        }

    creo il ciclo, metto tutti i numeri random in un array e inizio a stampare. Ad ogni ciclo controllo che il numero appen a creato non sia gia presente nell'array. Se gia presente non stampo e continuo per un nuovo numero mettendo il contatore indietro di 1.
    PS non so in termini di tempo quanto possa pesare l'esecuzione.

  3. #3
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Originariamente inviato da Manuelandro
    $simultaneo = array[1000000000];
    La sintassi qui è sbagliata.


    Io lo farei così:
    codice:
    $min = 0;
    $max = 99999;
    $nums = array();
    for ($i=$min; $i<=$max; $i++)
        array_push ($nums, $i);
    
    for ($i=$min; $i<=$max; $i++)
    {
        $k = array_rand ($nums, 1);
        echo $nums[$k] . "
    ";
        unset ($nums[$k]);
    }
    In pratica prima metto tutti i numeri in un array, poi con la funzione array_rand, pesco in modo casuale un elemento dall'array e poi lo tolgo dall'array in modo da non pescarlo più.
    Tieni presente che il ciclo di inserimento (e l'output) risulta abbastanza pesante. Sul mio web server in locale, se chiedo 100000 numeri, ci mette troppo tempo e lo script va in timeout dopo 30 secondi.
    Quindi immagina un po' con 100000000! ... Sempre ammesso che abbia memoria sufficiente!!!
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

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.