Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [MySQL][SQL]Losowanie dużej ilości liczb
kyez
post
Post #1





Grupa: Zarejestrowani
Postów: 48
Pomógł: 0
Dołączył: 6.09.2011

Ostrzeżenie: (0%)
-----


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.
Go to the top of the page
+Quote Post
abort
post
Post #2





Grupa: Zarejestrowani
Postów: 590
Pomógł: 107
Dołączył: 25.10.2011

Ostrzeżenie: (0%)
-----


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ć


Ten post edytował abort 27.01.2013, 23:16:07
Go to the top of the page
+Quote Post
kristaps
post
Post #3





Grupa: Zarejestrowani
Postów: 279
Pomógł: 36
Dołączył: 1.03.2012

Ostrzeżenie: (0%)
-----


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. ?>


Ten post edytował kristaps 27.01.2013, 23:31:14
Go to the top of the page
+Quote Post
tolomei
post
Post #4





Grupa: Zarejestrowani
Postów: 450
Pomógł: 135
Dołączył: 18.11.2010
Skąd: Wschowa

Ostrzeżenie: (0%)
-----


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.
Go to the top of the page
+Quote Post
kyez
post
Post #5





Grupa: Zarejestrowani
Postów: 48
Pomógł: 0
Dołączył: 6.09.2011

Ostrzeżenie: (0%)
-----


Dzięki za odpowiedź. Mógłbyś dokładniej wytłumaczyć jak za każdym przebiegiem pętli sprawdzać czy istnieje taką wartość ?
Go to the top of the page
+Quote Post
qasz
post
Post #6





Grupa: Zarejestrowani
Postów: 43
Pomógł: 2
Dołączył: 18.05.2010
Skąd: Norwich

Ostrzeżenie: (0%)
-----


http://php.net/manual/en/function.in-array.php
Go to the top of the page
+Quote Post
abort
post
Post #7





Grupa: Zarejestrowani
Postów: 590
Pomógł: 107
Dołączył: 25.10.2011

Ostrzeżenie: (0%)
-----


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.
Go to the top of the page
+Quote Post
kyez
post
Post #8





Grupa: Zarejestrowani
Postów: 48
Pomógł: 0
Dołączył: 6.09.2011

Ostrzeżenie: (0%)
-----


Dziękuję wszystkim bardzo za odpowiedzi. Wszystko działa tak jak chciałem. Pozdrawiam. (IMG:style_emoticons/default/smile.gif)
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 3.10.2025 - 16:36