| Author |
Message
|
greep Poziom 17

Joined: 29 Sep 2004 Posts: 393
|
#1
01 Mar 2010 22:08 [JAVA] Math.random - wyłączenie liczby z zakresu. |
|
|
|
Wiem, ze w Java mozna wygenerowac 'losowa' liczbe calkowita z pewnego zakresu liczb uzywajac metody Math.random
Np: zeby wygenerowac losowa liczbe calkowita z zakresu liczb 2-10 napiszemy:
x = ( 2 + (int) Math.random()* 8); // osiem bo 10-2=8
Czy jest mozliwosc wygenerowania losowej liczby calkowitej z dowolnego zakresu liczb z wylaczeniem jednej lub wiecej liczb? Np: chce wygenerowac losowa liczbe calkowita z zakresu liczb 2 - 10 z wylaczeniem liczby 5?
Czyli wygenerowana liczba moze byc: 2, 3, 4, 6, 7, 8, 9, 10.
Bylbym bardzo wdzieczny gdyby ktos przedstawil kod potrzebny rozwiazania tego problemu.
Zastanawia mnie czy problem taki mozna rozwiazac bezposrednio, czyli przez dodanie jakiegos parametru do metody Math.random, czy moze potrzeba troche wiecej kodu?
z gory dziekuje za pomoc
Poprawiłem tytuł. - arnoldziq
|
|
| Back to top |
|
 |
Google

|
#
01 Mar 2010 22:08 |
|
|
|
|
|
| Back to top |
|
 |
przemo_wielki Poziom 18

Joined: 11 Sep 2006 Posts: 584
|
#2
01 Mar 2010 23:05 Re: JAVA Math.random - wylaczenie jakiejs liczby z zakresu |
|
|
|
Nie znam takie wbudowanej funkcji. Ale można to obejść, możesz losować liczby i sprawdzać czy wylosowana to 5 jeżeli tak to powtarzasz. To ma jedną wadę wyobraź sobie że cały czas będziesz losował 5 ... Druga opcja to wykonanie 2 losowań pierwsze dla liczb z przedziału np. <2,5) drugie (5,n>. Trzecie co przychodzi mi na myśl to wrzucasz konkretne liczby do tablicy i z tej tablicy losujesz (losujesz tak naprawdę numer indeksu).
|
|
| Back to top |
|
 |
greep Poziom 17

Joined: 29 Sep 2004 Posts: 393
|
#3
02 Mar 2010 02:02 Re: JAVA Math.random - wylaczenie jakiejs liczby z zakresu |
|
|
|
w moim programie to wlasciwie chce wykorzystac tablice.
chodzi o to zeby dla 1 warunku losowal liczbe z indeksu od 1 do 100, a dla 2 warunku zeby losowal liczbe z indeksu od 1 do 100 z pominieciem indeksu 5.
moglbys rozwianac ta 3 opcje.
pozdrawiam i dzieki za pomoc
|
|
| Back to top |
|
 |
Google

|
#
02 Mar 2010 02:02 |
|
|
|
|
|
| Back to top |
|
 |
przemo_wielki Poziom 18

Joined: 11 Sep 2006 Posts: 584
|
#4
02 Mar 2010 02:59 Re: JAVA Math.random - wylaczenie jakiejs liczby z zakresu |
|
|
|
Jeżeli jest to zakres od 1 do 100 to pierwsza opcja będzie skuteczna: czyli sprawdzanie czy liczba jest 5 i w pozytywnym przypadku ponowne losowanie. Prawdopodobieństwo że wypadnie 5 to 1/100 więc dosyć mało.
Co do 3 opcji zwyczajnie wrzucasz 9 liczb od 1 do 10 z wyłączeniem 5 do tablicy 9 elementowej i losujesz liczby od 1 do 9 które są elementami tablicy np. wylosowałeś 5 to bierzesz tablica[5]=np.6;
Dla liczb od 1 do 10 miało to jeszcze jakieś uzasadnienie (np. jakbyś wyłączył kilka liczb) ale dla zakresu od 1 do 100 (i wyłączenia tylko 1 liczny) przedział jest tak duży i prawdopodobieństwo tak małe że bym się w to nie bawił i skorzystał z pierwszej opcji.
|
|
| Back to top |
|
 |
greep Poziom 17

Joined: 29 Sep 2004 Posts: 393
|
#5
02 Mar 2010 23:56 Re: [JAVA] Math.random - wyłączenie liczby z zakresu. |
|
|
|
dzieki za odpowiedz
jeszcze tak tylko dla potwierdzenia, czy ponizy 'pseudokod' jest ok:
IF ( x > 100 )
y = random integer (2-10)
ELSE // x <= 100
DO
y = random integer (2-10)
WHILE (y == 5)
|
|
| Back to top |
|
 |
Google

|
#
02 Mar 2010 23:56 |
|
|
|
|
|
| Back to top |
|
 |
eccocce Poziom 2

Joined: 11 Mar 2009 Posts: 2 Location: Wrocław
|
#6
17 Mar 2010 18:48 Re: [JAVA] Math.random - wyłączenie liczby z zakresu. |
|
|
|
wygląda ok, a można wiedzieć do czego potrzebny ci taki oszukany random? ;]
|
|
| Back to top |
|
 |
greep Poziom 17

Joined: 29 Sep 2004 Posts: 393
|
#7
17 Mar 2010 22:26 Re: [JAVA] Math.random - wyłączenie liczby z zakresu. |
|
|
|
chodzilo mi o losowe wygenerowanie dnia urodzin i wylaczenie 29 lutego (jednego miejsca z tablicy) w przypadku wylosowania dnia urodzin z roku przestepnego.
pzdr.
|
|
| Back to top |
|
 |