![]() ![]() |
Post
#1
|
|
|
Grupa: Zarejestrowani Postów: 11 Pomógł: 0 Dołączył: 3.04.2010 Ostrzeżenie: (0%)
|
Witam wszystkich forumowiczów,
Jestem początkującym programistą php i stawiam dopiero pierwsze kroki. Obecnie zajmuję się generatorem liczb losowych bez powtarzania. Mam stworzone oto coś takiego:
Zastanawiam się teraz i już 3 dzień nie mogę znaleźć rozwiązania, co zrobić, aby skrypt mógł np. wypisać pary liczb ze wszystkich elementów tej tablicy jaka jest tworzona i wyrzucił je na ekranie w sposób, że w każdej linijce znajduje się para liczb: LICZBA 1 - LICZBA 2 i w następnych linijkach poniżej kolejne pary liczb, oczywiście bez powtarzania i tak by powstały pary ze wszystkich elementów tworzonej tablicy. Czy trzeba jakąś pętlę wrzucić do skryptu? Ktoś mógłby mi pomóc i pokazać na przykładzie? Z góry dziękuję za pomoc:) Pozdrawiam Wszystkich Forumowiczów (IMG:style_emoticons/default/wink.gif) |
|
|
|
Post
#2
|
|
|
Grupa: Zarejestrowani Postów: 302 Pomógł: 24 Dołączył: 6.12.2008 Ostrzeżenie: (0%)
|
zależy co rozumiesz przez powtarzanie:
np. - czy tepary są dla ciebie identyczne $[1],$[2] i $[2],$[1] ? - czy ma nie być powtórzeń w wylosowanych parach $[1],$[1] $[5],$[5] ? |
|
|
|
Post
#3
|
|
|
Grupa: Zarejestrowani Postów: 1 447 Pomógł: 191 Dołączył: 26.03.2008 Ostrzeżenie: (0%)
|
Nie wiem, czy wiem o co Ci chodzi.... więc wybacz, jeśli dam Ci bezużyteczny kod.
Ten post edytował peter13135 27.08.2011, 09:33:16 |
|
|
|
Post
#4
|
|
|
Grupa: Zarejestrowani Postów: 302 Pomógł: 24 Dołączył: 6.12.2008 Ostrzeżenie: (0%)
|
@peter13135
$i<9 bo zabraknie towaru (IMG:style_emoticons/default/biggrin.gif) bo ostatni element tablicy ma index 9 Ten post edytował sada 27.08.2011, 09:48:28 |
|
|
|
Post
#5
|
|
|
Grupa: Zarejestrowani Postów: 11 Pomógł: 0 Dołączył: 3.04.2010 Ostrzeżenie: (0%)
|
Dziękuje wszystkim za pomoc:)
Peter13135 o coś takiego mi chodziło, tylko z małą modyfikacją. Wypisuje pary liczb z zakresu tablicy ale jak zrobić by te liczby ustawiane w pary były pomieszane a nie zawsze po kolei? Chodzi mi np. o wylosowanie par z zakresu tablicy typu 3-1, 8-2 itp. Oczywiście bez powtarzania się liczb tak jak teraz. |
|
|
|
Post
#6
|
|
|
Grupa: Zarejestrowani Postów: 302 Pomógł: 24 Dołączył: 6.12.2008 Ostrzeżenie: (0%)
|
żeby pomieszać dodaj shuffle($tablica) i umieść po definicji tablicy Ten post edytował sada 27.08.2011, 10:24:23 |
|
|
|
Post
#7
|
|
|
Grupa: Zarejestrowani Postów: 1 447 Pomógł: 191 Dołączył: 26.03.2008 Ostrzeżenie: (0%)
|
@peter13135 $i<9 bo zabraknie towaru (IMG:style_emoticons/default/biggrin.gif) bo ostatni element tablicy ma index 9 Racja (IMG:style_emoticons/default/wink.gif) W takim razie pomieszaj tę tablicę, i dopiero potem puść do pętli. Zobacz jak działa ten skrypt:
|
|
|
|
Post
#8
|
|
|
Grupa: Zarejestrowani Postów: 11 Pomógł: 0 Dołączył: 3.04.2010 Ostrzeżenie: (0%)
|
sada o coś takiego jak napisałeś właśnie mi chodziło:) Tylko pojawia się taka kwestia że skrypt wypisuje chyba wszystkie możliwości par jakie mogą być z elementów tablicy.. A mi chodziło o efekt żeby powstały pary z elementów tablicy jednakże bez powtarzania, po prostu każdej liczbie przypisywana by była inna liczba jaka do tej pory nie wystąpiła i tak tworzyłyby się pary... Chyba trzeba by dodać jakiś warunek/ograniczenie?
peter13135 wyrzuca mi elementy w skrypcie Twoim w brzydki sposób tj. przez array jako tablicę po prostu pokazuje.. Ten post edytował yorgwarez 27.08.2011, 10:47:48 |
|
|
|
Post
#9
|
|
|
Grupa: Zarejestrowani Postów: 1 447 Pomógł: 191 Dołączył: 26.03.2008 Ostrzeżenie: (0%)
|
peter13135 wyrzuca mi elementy w skrypcie Twoim w brzydki sposób tj. przez array jako tablicę po prostu pokazuje.. ehh. JA NIE DAŁEM CI W TYM PRZYPADKU GOTOWCA. Napisałem Ci skrypt który tworzy tablicę typu array(1,2,3,4...,20), następnie ją miesza i wyświetla, żebyś mógł zobaczyć na własne oczy rezultat działania skryptu. Na podstawie tego skryptu i pętli, którą Ci dałem w swoim wcześniejszym poście powinieneś potrafić samodzielnie napisać skrypt, który wypisze te pary liczb. @sada, mogłeś się powstrzymać, trochę trzeba motywować do samodzielnego myślenia. Ten post edytował peter13135 27.08.2011, 12:46:56 |
|
|
|
Post
#10
|
|
|
Grupa: Zarejestrowani Postów: 302 Pomógł: 24 Dołączył: 6.12.2008 Ostrzeżenie: (0%)
|
|
|
|
|
Post
#11
|
|
|
Grupa: Zarejestrowani Postów: 565 Pomógł: 15 Dołączył: 11.10.2010 Ostrzeżenie: (20%)
|
Mam skrypt który generuje liczby o określonej godzinie i w określone dni. Oczywiście bez powtarzania ich.
|
|
|
|
Post
#12
|
|
|
Grupa: Zarejestrowani Postów: 11 Pomógł: 0 Dołączył: 3.04.2010 Ostrzeżenie: (0%)
|
peter13135, no okej, skrypt działa i potrafię wypisać te elementy w inny sformatowany sposób, ale jak mam połączyć liczby w cyfry na podstawie tego co mi napisałeś? Tak jak napisał sada kod, to skrypt działa poprawnie tylko wypisuje wszystkie możliwe kombinacje par liczbowych, jak mogę je ograniczyć? Czytałem trochę o sposobach ograniczeń powtarzania się liczb w skryptach losujących ale albo radzą pracować na sesjach i cookies albo w sumie nikt nie znalazł uniwersalnego rozwiązania... Bo chcialem po prostu zmodyfikować rozwiązanie które napisał sada stosując ograniczenie by wypisywało tylko wszystkie możliwe pary raz z danego zakresu a nie wszystkie mozliwe kombinacje.. Żeby utworzyło pary z liczb danego zakresu tablicy wykorzystując wszystkie elementy tablicy losowo i jednokrotnie w przypadkowej kolejności bez powtarzania. Czyli do tego skryptu od sada muszę napisać pętlę by ograniczyć działanie tworzenia par tylko do jednorazowego wyczerpania wszystkich elementów z tablicy?
Przepraszam Was wszystkich za te moje pytania i dziękuję Wam z góry za cierpliwość mi okazaną i pomoc jaką do tej pory od Was otrzymałem. Dominator, patrzę na Twój skrypt i jak ograniczyłeś/wykluczyłeś powtórzenia? Jakieś sugestie jak najłatwiej to można zrobić? |
|
|
|
Post
#13
|
|
|
Grupa: Zarejestrowani Postów: 1 447 Pomógł: 191 Dołączył: 26.03.2008 Ostrzeżenie: (0%)
|
aby mieć wyniki na stałe, wylosuj raz, przypisz do sesji i będziesz miał na stałe. ewentualnie, jeśli ma to wynik losowania ma być taki sam dla wszystkich odwiedzających, to zserializuj tablicę i zapisz do pliku (funkcje serialize i file_put_contents). Do odczytywania tablicy użyj unserialize i file_get_contents.
Oczywiscie musisz zrobić odpowiednie warunki, jeśli nie ma wolosowanego, to losuj, jeśli jest, to nmie losuj, tlko wczytaj z pliku, czy sesji. Nie wiem co to znaczy połączyć liczby w cyfry W jaki sposób chcesz ograniczać skrypt sady ? co chcesz osiągnąć ? |
|
|
|
Post
#14
|
|
|
Grupa: Zarejestrowani Postów: 11 Pomógł: 0 Dołączył: 3.04.2010 Ostrzeżenie: (0%)
|
Skrypt sady wypisuje wszystkie możliwe kombinacje par liczbowych utworzonych z zakresu tablicy zdefiniowanego na początku (ilość elementów w tablicy). Ja chciałbym wprowadzić ograniczenie, aby wypisywane były pary powstałe w wyniku losowania i mieszczące się w zakresie elementów tablicy, ale nie wszystkie możliwości, ale tak by każda liczba miała przypisaną inną liczbę (tworząc parę), mieszcząc się w zakresie tablicy bez powtórzeń.
Może na przykładzie będzie prościej - załóżmy że to będzie aplikacja losująca pary piłkarskie w pucharach piłki nożnej. Każda cyfra z tablicy to jedna drużyna. Załóżmy że mamy 8 cyfr w tablicy do wylosowania. Do wylosowania są 4 pary liczb. Ale nie wypisujemy wszystkich możliwych kombinacji par liczbowych, ale chcemy przeprowadzić losowanie i utworzyć 4 losowe pary liczbowe bez powtórzeń. I za każdym uruchomieniem skryptu uczynić to od nowa, czyli losowanie się powtarza ale tworzone są nowe pary wg warunków podanych powyżej. Jak zmodyfikować skrypt sady, jakie ograniczenie wprowadzić, by wypisywało tylko raz te pary liczbowe a nie wszystkie możliwe kombinacje? |
|
|
|
![]() ![]() |
|
Aktualny czas: 5.04.2026 - 11:35 |