[php] sprwadzenie zgodnosci z plikiem

Witam. Czy może mnie ktoś nakierować jak rozwiązać ten problem:

Mam liczby z przedziału od 1 do 10. Losuję jedną liczbę i ona zapisuje się do pliku liczby.txt. Jak teraz zrobić aby liczby z pliku liczby.txt nie brały już udziału w losowaniu?

<?php

    $liczby=array('1','2','3','4','5','6','7','8','9','10');

    shuffle($liczby);

    ?>

    Losowany numerek:

    <?php

    $nazwa_pliku = 'liczby.txt';

    for ( $i = 0; $i < 1; $i++ )

    {

        echo $liczby[$i].', ';

        $tekst .= $liczby[$i]."\n";

    }


    if (!$wskaznik_pliku = fopen($nazwa_pliku, 'a+')) 

    {

        echo "Nie mogę otworzyć pliku ($nazwa_pliku)";

        exit;

    }

    if (fwrite($wskaznik_pliku, $tekst) === FALSE) 

    {

        echo "Nie mogę zapisać do pliku ($nazwa_pliku)";

        exit;

    }

    echo "zapisano: \"$tekst\" do pliku ($nazwa_pliku)";


    fclose($wskaznik_pliku);


    ?>

Tworzysz sobie kolejną tablice liczb już wylosowanych, przy losowaniu sprawdzasz czy dana liczba jest już w tablicy liczb wylosowanych, jeśli nie - dodajesz i robisz co tam chcesz, jeśli tak - przeskakujesz tą liczbę.

Btw. shuffle nie jest najlepszym rozwiązaniem. Lepiej rand z zakresem od 1 do 10(maksymalna liczba) i potem zmiana na string.

rand odpada miałem już i losowało 0 :slight_smile:

To źle losowałeś :wink:

$liczba = rand()%10 + 1;

echo $liczba;

Musi działać :wink:

przepraszam mialem

$liczby=range(1,38);

i losowało też 0 :slight_smile: rand nie sprawdzałem

PS. mam zrobić tablice (array)?

Tablicą będzie najszybciej i najprościej.

Coś tu nie rozumiem, w pętli losujesz jedną liczbę?

Może lepszy będzie taki algorytm:

  1. Tworzysz uporządkowaną tablice (jak podałeś)

  2. Wczytujesz liczby z pliku i usuwasz je z tablicy

  3. Tasujesz (jak podałeś)

  4. Pobierasz pierwszą (jak podałeś)

już zrobiłem troche inaczej ale jest ok:). Zrobiłem dwa pliki txt w jednym pliku są liczby od 1 do 6, drugi plik jest pusty. Zastosowałem funkcje array_diff. Wylosowana liczba zapisuje się do pliku tego pustego. A dzięki funkcji array_diff porównuje od dwa pliki i wypisuje TYLKO liczby które się nie powtarzają. Zatem jeśli w jednym pliku jest 6 a w drugiem jest 1, 2, 3, 4, 5, 6 - w losowaniu udział biorą 1, 2, 3, 4, 5 :slight_smile:

Dzięki za naprowadzenie mnie na tablice :slight_smile: