Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [PHP]Losowanie liczb
Lirdoner
post
Post #1





Grupa: Zarejestrowani
Postów: 500
Pomógł: 1
Dołączył: 29.09.2009

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


Witam, jak zrobić aby do zmiennej przypasowano losową liczbę od 0 do 11?
Go to the top of the page
+Quote Post
vokiel
post
Post #2





Grupa: Zarejestrowani
Postów: 2 592
Pomógł: 445
Dołączył: 12.03.2007

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


Przeczytać manual: rand
Go to the top of the page
+Quote Post
Lirdoner
post
Post #3





Grupa: Zarejestrowani
Postów: 500
Pomógł: 1
Dołączył: 29.09.2009

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


Ok mam takie coś
$indeks = rand(0,11);

I jak teraz zrobić, żeby losował bez 5?
Go to the top of the page
+Quote Post
Marcuez
post
Post #4





Grupa: Zarejestrowani
Postów: 98
Pomógł: 1
Dołączył: 7.07.2009
Skąd: Poligon Osielsko

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


$index = rand(0,11);
if ($index = 5)
losuj dalej
else
wyświetl
Go to the top of the page
+Quote Post
vokiel
post
Post #5





Grupa: Zarejestrowani
Postów: 2 592
Pomógł: 445
Dołączył: 12.03.2007

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


Sprawdzać wynik losowania, jeśli równy 5 losować jeszcze raz. Tak w pętli, funkcja wywołująca samą siebie, jeśli wynik losowania nie jest pożądany.
Go to the top of the page
+Quote Post
Lirdoner
post
Post #6





Grupa: Zarejestrowani
Postów: 500
Pomógł: 1
Dołączył: 29.09.2009

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


A jeżeli mam tak
  1. <?php echo $lekcja[rand(0,11)] ?>
  2. <?php echo $lekcja[rand(0,11)] ?>
  3. <?php echo $lekcja[rand(0,11)] ?>

Będą 3 razy losowane indeksy tablicy $lekcja i np. jeżeli w 1 indeks będzie wynosił 5 to żeby w następnych już 5 pomijało, jak to zrobić?
Go to the top of the page
+Quote Post
thomson89
post
Post #7





Grupa: Zarejestrowani
Postów: 1 178
Pomógł: 51
Dołączył: 7.01.2009
Skąd: Gdańsk

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


  1. $jeden = rand(0,11);
  2. $dwa = rand(0,11);
  3. $trzy = rand(0,11);
  4. if($jeden == 5){
  5. while($dwa != 5){
  6. $dwa = rand(0,11)
  7. }
  8. }
  9. if($dwa == 5){
  10. while($trzy != 5){
  11. $trzy = rand(0,11)
  12. }
  13. }
  14.  
  15. echo $lekcja[$jeden];
  16. echo $lekcja[$dwa];
  17. echo $lekcja[$trzy];


Ten post edytował thomson89 6.12.2009, 15:58:33
Go to the top of the page
+Quote Post
r4xz
post
Post #8





Grupa: Zarejestrowani
Postów: 673
Pomógł: 106
Dołączył: 31.12.2008

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


if($jeden = 5){
if($dwa = 5){


mały, ale uciążliwy błąd, powinno być == (IMG:style_emoticons/default/winksmiley.jpg)

Go to the top of the page
+Quote Post
thomson89
post
Post #9





Grupa: Zarejestrowani
Postów: 1 178
Pomógł: 51
Dołączył: 7.01.2009
Skąd: Gdańsk

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


No tak. Sorry... (IMG:style_emoticons/default/wstydnis.gif)
Go to the top of the page
+Quote Post
darko
post
Post #10





Grupa: Zarejestrowani
Postów: 2 885
Pomógł: 463
Dołączył: 3.10.2009
Skąd: Wrocław

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


  1. function myrand($min = 1, $max = 11) {
  2. $tmp = rand($min, $max);
  3. while($tmp == 5) {
  4. $tmp = rand($min, $max);
  5. }
  6. return $tmp;
  7. }
  8.  
  9. $lekcja = range(0,11);
  10. echo $lekcja[myrand()]."<br/>".$lekcja[myrand()]."<br/>".$lekcja[myrand()];
Go to the top of the page
+Quote Post
Wicepsik
post
Post #11





Grupa: Zarejestrowani
Postów: 1 575
Pomógł: 299
Dołączył: 26.03.2009

Ostrzeżenie: (20%)
X----


thomson89 dziwne kody robisz. Jak będzie chciał więcej o jeden to znów dodasz ifa? (IMG:style_emoticons/default/smile.gif)

  1. $array = array(); // Liczby
  2. do{
  3. $rand = rand(0,11); // Losowanie
  4. if(!in_array($rand, $array) and $rand != 5){ // Instrukcja warunkowa sprwadza czy nie istnieje już liczba w tablicy i czy nie jest to 5
  5. $array[] = $rand; // Dodawanie
  6. }
  7. }while(count($array) < 3); // Pętla wykonuje się dopóki nie będą 3 wartości w tablicy


Ten post edytował Wicepsik 6.12.2009, 16:10:25
Go to the top of the page
+Quote Post
darko
post
Post #12





Grupa: Zarejestrowani
Postów: 2 885
Pomógł: 463
Dołączył: 3.10.2009
Skąd: Wrocław

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


Albo jeszcze krócej:

  1. $mr = create_function('$min=1,$max=11','$tmp = rand($min, $max);while($tmp == 5) {$tmp = rand($min, $max);} return $tmp;');
  2. // tylko dla testu:
  3. $lekcja = range(0,11);
  4. //
  5. echo $lekcja[$mr()]."<br/>".$lekcja[$mr()]."<br/>".$lekcja[$mr()];
Go to the top of the page
+Quote Post
MateuszS
post
Post #13





Grupa: Zarejestrowani
Postów: 1 429
Pomógł: 195
Dołączył: 6.10.2008
Skąd: Kraków/Tomaszów Lubelski

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


Jak chcesz zrobic totolotka to masz tu gotowy skrypt mojej roboty, losuje ile chcesz liczb z jakiego chcesz przedzialu

  1. <?
  2.  
  3. $od=1;
  4. $do=46;
  5. $ile=6; //ile liczb losuje
  6. $warunek=false;
  7. $tablica=array();
  8. $i=1;
  9. if(($do-$od)>=$ile-1) {
  10. while($i<=$ile) {
  11. if($i==1) {
  12. $tablica[$i]=rand($od,$do);
  13. } else {
  14. while($warunek==false) {
  15. $los=rand($od,$do);
  16. if(!in_array($los,$tablica)) {
  17. $tablica[$i]=$los;
  18. $warunek=true;
  19. }
  20. }
  21. }
  22. echo $tablica[$i].',';
  23. $warunek=false;
  24. $i++;
  25. }
  26. } else {
  27. echo 'Za mały przedział ('.$od.' do '.$do.') dla liczby losowanych liczb ('.$ile.')';
  28. }
  29.  
  30. ?>
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: 25.08.2025 - 13:56