Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [MySQL][SQL]Losowanie dużej ilości liczb
Forum PHP.pl > Forum > Przedszkole
kyez
Witajcie.

Jestem raczej początkujący jeśli chodzi o php więc proszę o wyrozumiałość. A teraz do rzeczy.

Potrzebuje wylosować ok 400 ciągów liczbowych o długości 5 znaków. Liczby te nie mogą się powtarzać. Mają on służyć jako oryginalne kody i być wstawione do bazy mysql. Problem polega na tym, że totalnie niewiem jak się za to zabrać. Zwykle użycie fora chyba nie da pożądanego rezultatu..

Pozdrawiam, Przemek.
abort
kod z głowy
  1. $liczby = array();
  2. do {
  3. $liczba = rand( ...jakieś parametry... ); // losujemy liczbę o zadanych warunkach brzegowych
  4. if ( ! in_array ($liczba, $liczby)) { // nie ma takiej liczby w tablicy
  5. array_push ($liczby, $liczba); // dodaj liczbę na koniec tablicy
  6. }
  7. } while (count ($liczby) < 400); // ile liczb generować
kristaps
Temat rzeka, wiele możliwych rozwiązań. Np. pętla, tablica, która przechowuje wynik i funkcja losująca.

Edit: Abort mnie ubiegł.

Też zapodam coś na szybko, załóżmy bez rand():

  1. <?php
  2.  
  3. $tablica = range(0, 1000000);
  4.  
  5. shuffle($tablica);
  6.  
  7. $tablica = array_slice($tablica, 0, 400);
  8.  
  9. echo "<pre>"; print_r($tablica); echo "</pre>";
  10. ?>
tolomei
Witaj.

Przyda Ci się funkcja rand(), pętla for.
Przy każdym obrocie pętli wrzucaj kod do tablicy i jednocześnie sprawdzaj czy wylosowany ciąg już tam istnieje.

Wiele pracy przy tym nie ma.
Jakieś 5-10 linijek.

Pozdrawiam.
kyez
Dzięki za odpowiedź. Mógłbyś dokładniej wytłumaczyć jak za każdym przebiegiem pętli sprawdzać czy istnieje taką wartość ?
abort
Przecież w moim kodzie jest funkcja in_array - jak sobie klikniesz w tę funkcję, to pojawi Ci się okienko z manualem do tej funkcji. Prościej chyba nie można.
kyez
Dziękuję wszystkim bardzo za odpowiedzi. Wszystko działa tak jak chciałem. Pozdrawiam. smile.gif
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.