Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [PHP]Losowanie 3 licz z przedziału wiele razy
programistaarek
post
Post #1





Grupa: Zarejestrowani
Postów: 116
Pomógł: 0
Dołączył: 1.02.2015

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


Witam chciałbym napisać kod w PHP który z przedziału liczb 30-39 wylosuje mi liczby bez powtórzeń 3 liczby w takiej formie
np 32 35 39
Ale chcę by wylosowało mi maksymalną kombinację takich liczb np
- 30 31 32
- 31 32 33
- 30 31 33
Wiadomo bez powtórzeń
itd itd
Jak takie coś napisać żeby losowało wszystkie kombinacje na raz a nie tylko jeden rekord oraz jak dać ograniczenie np do wylosowania bez powtórzeń hmm 10 rekordów
Obecnie mam taki kod i działa dobrze po losuje 3 liczby bez powtórzeń ale tylko jedna linijka a chcę by pokazało maksymalną możliwość razy

  1. <?php
  2. $tab = array();
  3. for($i=30;$i<=39;$i++)
  4. {
  5. $tab[] = $i;
  6. }
  7.  
  8. $lotto = array_rand ($tab, 3);
  9. echo $tab[$lotto[0]] . "\n";
  10. echo $tab[$lotto[1]] . "\n";
  11. echo $tab[$lotto[2]] . "\n";
  12.  
  13.  
  14. ?>

Pozdrawiam i czekam na odpowiedzi.
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
programistaarek
post
Post #2





Grupa: Zarejestrowani
Postów: 116
Pomógł: 0
Dołączył: 1.02.2015

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


Cytat(kreatiff @ 20.03.2020, 16:54:32 ) *
Można np. tak:
  1. $tab = range(30,39);
  2. $liczebnoscZbioru = 3;
  3. $liczbaLosowan = 30; // ile chcesz mieć zestawów liczb
  4.  
  5. if ($liczebnoscZbioru > count($tab)) die('Zmniejsz liczebność pojedynczego zbioru.');
  6. $wynik = [];
  7. $powtorzenie = 0;
  8. for ($i = 1; $i <= $liczbaLosowan; $i++) {
  9. shuffle($tab);
  10. $los = array_slice($tab, 0, $liczebnoscZbioru);
  11. sort($los);
  12. if (in_array($los, $wynik)) {
  13. $i--;
  14. $powtorzenie++;
  15. if ($powtorzenie > 100) { // zabezpieczenie przed nieskończoną pętlą
  16. die('Brak liczby wymaganych wyników - zmniejsz liczbę losowań lub zwiększ przedział liczbowy.');
  17. }
  18. } else {
  19. $wynik[$i] = $los;
  20. }
  21. }
W $wynik masz $liczbaLosowan unikalnych tablic z $liczebnoscZbioru wylosowanymi z zadanego przedziału liczbami.


Nic się nie wyświetla :/
Dałem echo $wynik; i nic :/
Jedynie np 30 razy samo array

Ten post edytował programistaarek 20.03.2020, 19:01:43
Go to the top of the page
+Quote Post

Posty w temacie


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

 



RSS Aktualny czas: 9.10.2025 - 10:38