Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 11
  1. #1
    Utente di HTML.it
    Registrato dal
    Jun 2001
    residenza
    NG Lab Cecchina, Roma
    Messaggi
    143

    Scrivere numeri in serie

    Ciao, vorrei scrivere in un file numeri da zero a 499 in serie. Esempio:
    0 0 x y
    0 1 x y
    ........
    0 499 x y
    ............
    499 499 x y


    X= numero random 0-2 (0=30% 1=60% 2=10%)
    Y= numero random 1-12 (a caso)

    saranno alla fine 250.000 righe e non mi va di scrivere tutto a mano
    Ottima scelta

  2. #2
    Utente di HTML.it
    Registrato dal
    Mar 2009
    Messaggi
    128
    fai un pò di cicli

    Codice PHP:
    //ciclo prima cifra
    for ($a=1;$a<=499;$a++) {

    // ciclo seconda cifra
    for ($b=1;$b<=499;$b++){

    // funzione rand per prendere un numero a caso
    $y =  rand(112);

    // con un pò di astuzia possiamo utilizzare la stessa funzione per la probabilità

    $prob rand(1,10);
    if (
    $prob<=3$x 0// il 30% delle volte prob sarà 1,2 o 3 -> x = 0;
    if (($prob>3)&&($prob<10)) $x 1;
    if (
    $prob=10$x 2;

    // ora hai tutti i valori, quindi la stringa è

    $stringa[] = $a.$b.$x.$y;
         

    // fine ciclo seconda cifra
    }
    // fine ciclo prima cifra


  3. #3
    Utente di HTML.it
    Registrato dal
    Jun 2001
    residenza
    NG Lab Cecchina, Roma
    Messaggi
    143

    Sbaglio nel scrivere il file ?

    Codice PHP:
    <?php
    //ciclo prima cifra 
    for ($a=1;$a<=499;$a++) { 

    // ciclo seconda cifra 
    for ($b=1;$b<=499;$b++){ 

    // funzione rand per prendere un numero a caso 
    $y =  rand(112); 

    // con un pò di astuzia possiamo utilizzare la stessa funzione per la probabilità 

    $prob rand(1,10); 
    if (
    $prob<=3$x 0// il 30% delle volte prob sarà 1,2 o 3 -> x = 0; 
    if (($prob>3)&&($prob<10)) $x 1
    if (
    $prob=10$x 2

    // ora hai tutti i valori, quindi la stringa è 

    $stringa[] = $a.$b.$x.$y
          

    // fine ciclo seconda cifra 

    // fine ciclo prima cifra 
    }

    $file=fopen('file1.txt','a,b,x,y'); 


    fwrite($file$a' '$b' '$x' '$y\n); 


    fclose($file); 
    ?>
    Ottima scelta

  4. #4
    Utente di HTML.it
    Registrato dal
    Mar 2009
    Messaggi
    128
    beh sì, non sono in ufficio e non posso provarlo però le variabili abx e y cambiano ad ogni ciclo, è la stringa che viene salvata in un array.

    Codice PHP:

    $fp
    =fopen("file1.txt","w+");

    foreach(
    $stringa as $key => $value){

    fwrite($fp,$value."\t");
    }

    fclose($file); 

  5. #5
    Utente di HTML.it
    Registrato dal
    Jun 2001
    residenza
    NG Lab Cecchina, Roma
    Messaggi
    143
    mi scrive un file, ma non lascia gli spazi che mi servono per SQL.
    a me servirebbe un output del genere:

    INSERT INTO `map` (`x`, `y`, `type`, `subtype`) VALUES
    (0, 0, 0, 0),
    (0, 1, 0, 0),
    (0, 2, 0, 0),
    (0, 3, 0, 0),
    (0, 4, 0, 0),
    (0, 5, 0, 0),


    oltre a scrivere tutto attaccato colonna type prevale il 2 mentre a me servirebbe piu 1
    Ottima scelta

  6. #6
    Utente di HTML.it
    Registrato dal
    Mar 2009
    Messaggi
    128
    non ci sono spazi perchè nella costruzione della stringa non ci sono se ti servono li metti

    $stringa[] = $a.$b.$x.$y;

    diventa

    $stringa[] = $a. " " .$b. " " . $x . " " .$y;

    se ti servono le virgole metti le virgole, ecc. ecc.

    sulla colonna type non puoi fare niente, la probabilità è chiaramente sui grandi numeri, tu puoi anche dire che un colore può essere bianco al 50% e nero al 50%, ma questo non significa che su 100 database saranno 50 bianchi e 50 neri

  7. #7
    Utente di HTML.it
    Registrato dal
    Jun 2001
    residenza
    NG Lab Cecchina, Roma
    Messaggi
    143
    Cosi' X mi veniva sempre 2
    Codice PHP:
    $prob rand(1,10);  
    if (
    $prob<=3$x 0// il 30% delle volte prob sarà 1,2 o 3 -> x = 0;  
    if (($prob>3)&&($prob<10)) $x 1;  
    if (
    $prob=10$x 2
    l'ho messo random 0, 2 e ho risolto... come va, va...

    Di seguito tutto il codice: (hai visto mai ch'avessi un clone)
    Codice PHP:
    <?php
    //ciclo prima cifra 
    for ($a=0;$a<=49;$a++) { 

    // ciclo seconda cifra 
    for ($b=0;$b<=49;$b++){ 

    // funzione rand per prendere un numero a caso 
    $y =  rand(012); 

    // con un pò di astuzia possiamo utilizzare la stessa funzione per la probabilità 

    $x rand(02);  


    // ora hai tutti i valori, quindi la stringa è 

    $stringa[] = "(" .$a", " .$b", " $x ", " .$y"),";
          

    // fine ciclo seconda cifra 

    // fine ciclo prima cifra 
    }

    $fp=fopen("file1.txt","w+"); 

    foreach(
    $stringa as $key => $value){ 

    fwrite($fp,$value."\n"); 


    fclose($file); 
    ?>
    Ottima scelta

  8. #8
    Utente di HTML.it
    Registrato dal
    Mar 2009
    Messaggi
    128
    scusami, nello scrivere il codice al volo senza provarlo scappa sempre qualcosa
    Codice PHP:
    if ($prob<=3$x 0// il 30% delle volte prob sarà 1,2 o 3 -> x = 0;  
    else if (($prob>3)&&($prob<10)) $x 1;  
    else if (
    $prob==10$x 2
    (modifiche: gli else ed il doppio uguale)

  9. #9
    Utente di HTML.it
    Registrato dal
    Jun 2001
    residenza
    NG Lab Cecchina, Roma
    Messaggi
    143
    cosi viene un bel ZERO tondo su tutte le righe
    Ottima scelta

  10. #10
    Utente di HTML.it
    Registrato dal
    Mar 2009
    Messaggi
    128
    a me funziona, prova
    Codice PHP:
    <?php
    //ciclo prima cifra 
    for ($a=0;$a<=49;$a++) { 

    // ciclo seconda cifra 
    for ($b=0;$b<=49;$b++){ 

    // funzione rand per prendere un numero a caso 
    $y =  rand(012); 

    // con un pò di astuzia possiamo utilizzare la stessa funzione per la probabilità 

    $prob rand(1,10);  
    if (
    $prob<=3$x 0// il 30% delle volte prob sarà 1,2 o 3 -> x = 0;  
    elseif (($prob>3)&&($prob<10)) $x 1;  
    elseif (
    $prob==10$x 2;


    // ora hai tutti i valori, quindi la stringa è 

    $stringa[] = "(" .$a", " .$b", " $x ", " .$y"),";
          

    // fine ciclo seconda cifra 

    // fine ciclo prima cifra 
    }
    $file "file1.txt";
    $fp=fopen($file,"w+");

    foreach(
    $stringa as $key => $value){ 

    fwrite($fp,$value."\t"); 


    fclose($fp); 
    ?>

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.