Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [JavaScript]Losowanie liczby z warunkiem
-Gość-
post
Post #1





Goście







[JAVASCRIPT] pobierz, plaintext
  1. Math.floor(Math.random()*321)
[JAVASCRIPT] pobierz, plaintext
to wysoluje liczby z zakresu 1-321.. a jak dodać do tego warunek, by losowało liczby jedynie podzielne przez 16?
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 9)
markonix
post
Post #2





Grupa: Zarejestrowani
Postów: 2 707
Pomógł: 290
Dołączył: 16.12.2008
Skąd: Śląsk

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


Proponuje pętlę while + modulo.


--------------------
Go to the top of the page
+Quote Post
Piogola
post
Post #3





Grupa: Zarejestrowani
Postów: 151
Pomógł: 36
Dołączył: 1.02.2011
Skąd: Warszawa

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


Wylosuj liczbę od 1 do 20 i pomnóż ją przez 16


--------------------
Google Manual
Go to the top of the page
+Quote Post
croc
post
Post #4





Grupa: Zarejestrowani
Postów: 706
Pomógł: 108
Dołączył: 12.03.2010

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


Ciekawe pytanie. Ogólnie liczbę losową z zakresu <min, max> można wylosować tak:

[JAVASCRIPT] pobierz, plaintext
  1. function random(min, max) {
  2. return Math.floor(Math.random() * (max - min + 1)) + min;
  3. }
[JAVASCRIPT] pobierz, plaintext


Musiałbyś sprawdzić ile jest liczb podzielnych przez daną liczbę w wybranym zakresie, odpowiednio zmniejszyć zakres losowania na 0 - k, gdzie k to ilość tych liczb i potem przemnożyć przez ten dzielnik. Trochę zabawy, ale można to zrobić spokojnie w jednej linijce I BEZ ŻADNYCH WHILE.

Ten post edytował croc 3.12.2011, 23:32:17
Go to the top of the page
+Quote Post
-wita-
post
Post #5





Goście







Rand() i time()
Go to the top of the page
+Quote Post
croc
post
Post #6





Grupa: Zarejestrowani
Postów: 706
Pomógł: 108
Dołączył: 12.03.2010

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


Cytat(wita @ 4.12.2011, 00:25:29 ) *
Rand() i time()

Ktoś tu chyba popił tongue.gif
Go to the top of the page
+Quote Post
-Gość-
post
Post #7





Goście







ogólnie zrobiłem to tak:
[JAVASCRIPT] pobierz, plaintext
  1. var p;
  2. for(x=1,y=0; x<=320; x=x+16,y++) p[y] = x;
  3. alert( p[Math.floor(Math.random()*p.length)] );
[JAVASCRIPT] pobierz, plaintext

nie wiem czy optymalne, ale nic lepszego niż phpowe array_rand nie przyszło mi do głowy

a co do while+modulo, kombinowałem z tym przed napisaniem tematu i nic z tego
Go to the top of the page
+Quote Post
-Gość-
post
Post #8





Goście







jeszcze tam z poprawką przy deklaracji x=0 a nie 1
Go to the top of the page
+Quote Post
croc
post
Post #9





Grupa: Zarejestrowani
Postów: 706
Pomógł: 108
Dołączył: 12.03.2010

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


Stworzyłem coś takiego na szybko, ale nie wiem czy działa w 100% no i raczej też nie optymalnie, choć dużo lepiej:
[JAVASCRIPT] pobierz, plaintext
  1. function randomDivider(min, max, divider) {
  2. return (Math.floor(Math.random() * (Math.floor(max / divider) - Math.ceil(min / divider) + 1)) + Math.ceil(min / divider)) * divider;
  3. }
[JAVASCRIPT] pobierz, plaintext
Go to the top of the page
+Quote Post
-Gość-
post
Post #10





Goście







na pierwszy rzut oka działa idealnie ohno-smiley.gif
Go to the top of the page
+Quote Post

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: 19.08.2025 - 05:20