![]() |
![]() ![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 76 Pomógł: 4 Dołączył: 27.02.2009 Ostrzeżenie: (0%) ![]() ![]() |
Witam,
Mam mapę 700x700 (coś podobnego jak mapa w grach przeglądarkowych). Pragnę wypełnić 10% mapy specjalnymi polami, które będą na stałe zapisane w bazie. Pola są całkowicie niezależne i losowe. Wyliczyłem, że potrzebuję 49 000 takich pół. Pole składa się ze współrzędnych x i y. Para liczb od 1-700 powinna być niepowtarzalna. Zabrałem sie do pracy i przygotowałem sobie taki plik:
Do jakiegoś czasu wszystko szło dobrze. W bazie danych umieściłem ~ 24 000 pól, jednak potem wszystko się popsuło, gdyż zmienna $check dla każdego obiegu pętli zaczęła zwracać 1 ( ![]() ![]() W konsekwencji wygląda to tak: Kod 0 1 exist 591|311 1 1 exist 84|166 2 1 exist 436|94 3 1 exist 573|563 4 1 exist 362|269 5 1 exist 433|160 6 1 exist 609|464 7 1 exist 428|511 8 1 exist 368|658 9 1 exist 273|18 10 1 exist 579|479 11 1 exist 36|234 12 1 exist 434|605 13 1 exist 130|264 14 1 exist 172|663 15 1 exist 623|259 16 1 exist 385|633 17 1 exist 529|23 18 1 exist 613|142 19 1 exist 614|409 20 1 exist 47|569 21 1 exist 593|520 22 1 exist 326|141 23 1 exist 534|510 24 1 exist 643|236 25 1 exist 150|181 26 1 exist 538|484 27 1 exist 207|387 28 1 exist 600|161 29 1 exist 422|230 30 1 exist 371|296 31 1 exist 160|564 32 1 exist 442|168 33 1 exist 536|492 34 1 exist 353|103 35 1 exist 217|168 36 1 exist 694|81 37 1 exist 317|93 38 1 exist 307|430 39 1 exist 202|422 40 1 exist 481|427 41 1 exist 288|257 42 1 exist 58|401 43 1 exist 641|452 44 1 exist 329|330 45 1 exist 277|109 46 1 exist 133|542 47 1 exist 660|82 48 1 exist 61|315 49 1 exist 106|175 50 1 exist 355|677 51 1 exist 82|539 52 1 exist 204|206 53 1 exist 302|278 54 1 exist 549|632 55 1 exist 133|246 56 1 exist 582|530 57 1 exist 690|245 58 1 exist 542|231 59 1 exist 638|429 60 1 exist 320|411 61 1 exist 394|601 62 1 exist 157|700 63 1 exist 22|213 64 1 exist 643|374 65 1 exist 639|469 66 1 exist 619|463 67 1 exist 210|123 68 1 exist 676|244 69 1 exist 550|376 70 1 exist 355|46 71 1 exist 326|683 72 1 exist 245|546 73 1 exist 653|146 74 1 exist 587|673 75 1 exist 197|319 (...) 1000 ...... No i niestety dalsze pola się nie chcą dodać do bazy, ... dalej już nie wiem co poradzić ![]() Proszę o pomoc W tym wypadku prawdopodobieństwo wylosowania powtarzającej się pary jest mniejsze niż 10%... Ten post edytował PiNkOs 6.07.2013, 14:42:04 |
|
|
![]()
Post
#2
|
|
![]() Grupa: Zarejestrowani Postów: 915 Pomógł: 210 Dołączył: 8.09.2009 Skąd: Tomaszów Lubelski/Wrocław Ostrzeżenie: (0%) ![]() ![]() |
1) Co zwraca
2) Jeżeli chcesz to zrobić jednorazowo, to lepiej niech sam PHP wygeneruje 49.000 par i wstawisz je jednym zapytaniem. -------------------- |
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 76 Pomógł: 4 Dołączył: 27.02.2009 Ostrzeżenie: (0%) ![]() ![]() |
1) 24026
2) Próbowałem pętle ustawiać na 49000 razy, ale po ~1200 był timeout..., jednym zapytaniem nie próbowałem, a warto? |
|
|
![]()
Post
#4
|
|
![]() Grupa: Zarejestrowani Postów: 587 Pomógł: 190 Dołączył: 5.02.2011 Skąd: 64-800 Ostrzeżenie: (0%) ![]() ![]() |
Z rand() jest tak, że co kilkanaście tysięcy albo co kilkadziesiąt tysięcy losowań powtarza się cały ciąg losowanych liczb, użyj mt_rand(), losuje szybciej i o wiele mniejsza powtarzalność ciągu.
|
|
|
![]()
Post
#5
|
|
Grupa: Zarejestrowani Postów: 76 Pomógł: 4 Dołączył: 27.02.2009 Ostrzeżenie: (0%) ![]() ![]() |
Jasne, teraz wszystko działa jak należy. DZIĘKI!
|
|
|
![]() ![]() |
![]() |
Wersja Lo-Fi | Aktualny czas: 12.06.2025 - 14:59 |