Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: mt_rand()
Forum PHP.pl > Forum > Przedszkole
tiramizu
Mam takie proste pytanko. Chcę generować losowo liczby z zakresu X, Y. Używam do tego funkcji mt_rand(). Pytanie jest takie, czy jest możliwość wybrania losowo jakiś liczb z jakiegoś przedziału. Ale chodzi mi o liczby zmiennoprzecinkowe ? Domyślnie dla mt_rand() jest typ int. Czy jest możliwośc zrobić coś takiego dla liczb zmiennoprzecinkowych ?
nospor
widze ze juz pozno i pokombinowac sie nie chce winksmiley.jpg
  1. <?php
  2. $zm = (float)(mt_rand(10,20).'.'.mt_rand(0,100));
  3. echo $zm;
  4. ?>

Prosze poprawic tytul o znacznik zgodnie z zasadami forum przedszkole
erix
Nie wiem za bardzo...
Do glowy przychodzi mi wygenerowanie wiekszej liczby, np. 12345678, konwersja na string, wstawienie w pewnym miejscu kropki (123.45678) i konwersja na float.
cyphelf
Najlepiej będzie wylosować liczbę, a następnie rzutować ją na przedział od 0 do 1 przez podzielenie jej przez maksymalną wartość liczby losowej. Wtedy mając losową liczbę z tego przedziału jesteśmy w stanie rzutować to na dowolny inny przedział.

Na przykład tu wylosujemy liczbę zmiennoprzecinkową z przedziału (-1,1):

Zmieniąjąc wartości zmiennych $start i $koniec można otrzymać dowolne losowe liczby.

  1. <?php
  2.  
  3. $start = -1;
  4. $koniec = 1;
  5.  
  6. $rand = mt_rand()/mt_getrandmax();
  7.  
  8. echo ($rand*($koniec-$start))+$start;
  9. ?>


Jeśli chcemy wylosować liczbę z przedziału od 0 do 1 to wystarczy to zrobić tak:

  1. <?php
  2.  
  3. ?>
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.