Novo

Forum kao aplikacija na telefonu

Dodajte forum na početni ekran i koristite ga kao aplikaciju, sa menijem na dnu ekrana.

kako da dobijem brojeve izmedju -20 i 20 pomocu neke metode???

  • 6 odgovora
  • 3.961 pregleda

Najnovija ↓

kako da dobijem brojeve izmedju -20 i 20 pomocu neke metode??? 26.02.2007. u 21:21 · pre 239 meseci #1
Pozdrav svima.

Hteo sam da napravim niz koji se puni double vrednostima -20 do 20 i da recimo pomocu Math.random() metode dobijem neki broj koji cu ja pomnoziti brojem izmedju -20 i 20 i tako dobiti neke vrednosti.Hteo sam to da uradim kroz neku for petljicu, ali ne znam bas kako bih pomnozio neki random broj i sa nekim pozitivnim i negativnim brojevima.

for(int i=0;i<niz.length;i++)
{
niz = Math.random()* ????????
}

recimo da hocu 50 vrednosti da dobijem izmedju -20 i 20


Hvala
Potpis
D
Re: kako da dobijem brojeve izmedju -20 i 20 pomocu neke metode??? 26.02.2007. u 21:45 · pre 239 meseci
izmenjeno 1 put, poslednji put Milos Zobenica 26.02.2007. u 21:57
  1. Milos Zobenica26.02.2007. u 21:57zapis iz teksta poruke
#2
Mozes ovako, mada je relativno lose napisano, ali radi posao :)


Code:

for(int i=0; i<niz.length; )
{
niz[i] = Math.random();
if ( ( niz[i] < 20 ) && ( niz[i] > -20 ) ) i++;
}
Potpis
Re: kako da dobijem brojeve izmedju -20 i 20 pomocu neke metode??? 28.02.2007. u 13:33 · pre 239 meseci #6
Za to postoji jedan opti princip, a to je pravljenje bijekcije iz opsega skupa koji daje funkcija Math.random() sa opsegom koji nama treba. Po teoriji, moguce je napraviti bijekciju preslikavanja opsega realnih brojeva iz opsega [0,1) sa beskonacnim skupom realnih brojeva. To je onaj dokaz iz Matematicke algebre, ne secam se tacno kako ide, ali cak nije ni tesko, ako neko hoce, mogu da se 'napnem' pa da ga se prisetim. No to nije vazno, vazno je da racunari ne rade sa beskonacnim brojevima, pa mi preslikavamo u opseg koji nama treba.

Takodje, vazno je primetiti da opseg koji generise funkcija random() obuhvata nulu, ali ne i jedinicu.

Da ne davim teorijom (koje se, usput ni ja tacno ne secam), vazno je reci da se tu koriste samo dve operacije nad opsegom:
- skaliranje
- pomeranje (vise volim izraz siftovanje).

Ako hocemo opseg izmedju 0 i nekog broja n, vrsimo mnozenje Math.random() sa tim brojem n (skaliranje).
A, ako hocemo da taj opseg ne pocinje od nule, vec od nekog broja, dodamo taj broj na prethodni rezultat (siftovanje).

Znaci, u tvom slucaju, ako bi hteli opseg izmedju -20 i 20, prvo oduzmemo granice opsega 20 - (-20) i dobijemo opseg od 0 do 40. Zatim vrsimo dodavanje broja (-20) na rezultat i dobijamo opseg izmedju -20 i 20. Tacno onako kako si ti uradio.

Zakljucak:
Uvek se vrsi prvo skaliranje sa brojem koji dobijamo oduzimanjem granice opsega.
Zatim se vrsi siftovanje brojem koji je donja granica opsega.

Napomena:
Krajnji rezultat je broj tipa double iz opsega [-20,20), znaci broj 20 nije ukljucen u rezultat.

@Vanja Petreski:
Tvoj primer je dobar ako nam trebaju celi brojevi, ali Meklaud je trazio:
Citat:
niz koji se puni double vrednostima

Pozdrav
Potpis
Daniel Sabo
Prijavite se da biste odgovorili u ovoj temi.PrijavaRegistracija

Premeštanje teme