Šta je novo?

Java nesuglasica

AlexxandarYo

Čuven
Učlanjen(a)
08.07.2003
Poruke
390
Poena
619
Test zadatka je:
Definisati klasu Racunar. Klasa sadrzi atribute operativniSistem, IPadresa, metod koji generise IP adresu iz opsega 192.168.1.1 - 192.168.1.128
Kod:
package ispit;
import java.util.Random;
public class Racunar {
    String operativniSistem;
    String IPadresa;
    public void generisiIP(){
        Random R=new Random();
        String abc="192.168.1.";
        int d=R.nextInt(128)+1;
        this.IPadresa = abc+d;
    }
}
Ovako je drugar sa faksa odradio a asistent tvrdi da je netačno zato što se dobija broj van opsega. S obzirom da nextInt radi ekskluzivno znači 0 do dati broj - 1 znači nextInt(128) daje 0-127 zato ovo + 1 na kraju to menja u 1-128.

Jel asistent greši ili smo mi nešto loše skapirali?
 
JavaDoc daje vama za pravo tj. data funkcija generise pseudoslucajne vrednosti u rasponu od 0 (inclusive) do specified_value (exclusive).
 
izgleda da vam je asistent zaboravio da je "gornja granica" exclusive (u mnogim jezicima je inclusiv sa obe strane)
 
Ja redovno pomesam te funkcije, a kako sam lenj da pogledam, obicno uradim ovako nekako

(Math.random() * 1000) % 128 + 1, pa da ga vidim da filozofira 😉
 
ne mogu da verujem da se o tome uopste diskutuje... lako proveriti u dokumentaciji, u kodu i empirijski, a nebitno do bola...
 
Ako ga preterano brinu optimizacije onda ga nece pisati u Javi 🙂
 
Uspeli smo da razrešimo stvar sa asistentom baš uz proveru dokumentacije, drugar se u prvi mah nije snašao da mu objasni kako je on to zamislio. S obzirom da je asistent imao na umu rešenje koje prati WebWolfovu optimizaciju(while petja i random dok se ne ubode broj u opsegu).
ne mogu da verujem da se o tome uopste diskutuje... lako proveriti u dokumentaciji, u kodu i empirijski, a nebitno do bola...
Nažalost diskusija je bila neophodna 😛
Zasluženi poeni sa ispita su vraćeni 🙂
 
Jel i ostali kod ovako optimizuješ za brzinu? :d

E jesi me nasmejao 😀 . Znam da je sala, ali vampir je odgovorio 😀 .

@Alex
Sta ce mu petlja, ovo je po modulu 128 (pa +1), sto mora biti u opsegu. Math.random() daje realni broj od 0 do 1.
 
Kako šta će mu petlja? Kada neko razmišlja u pogrešnom smeru to deluje kao dobra ideja 🙂 e sada što je ne optimizovano... to nije bitno!
 
E jesi me nasmejao 😀 . Znam da je sala, ali vampir je odgovorio 😀 .

@Alex
Sta ce mu petlja, ovo je po modulu 128 (pa +1), sto mora biti u opsegu. Math.random() daje realni broj od 0 do 1.

Nije tu toliko problem optimizacija, koliko cinjenica da mu ubijas uniformnost (cak i kad PRNG ima uniformnu raspodelu) raspodele mnozeci sa 1000 🙂
 
Nazad
Vrh Dno