Avatar billede laurits Nybegynder
25. oktober 2003 - 14:02 Der er 14 kommentarer og
1 løsning

random numre

Er der nogen der har et godt forslag til hvordan man laver tilfældige tal, når man ikke har Math.random metoden til rådighed???
Avatar billede repsak Nybegynder
25. oktober 2003 - 14:05 #1
hvorfor har du ikke det???

Men måske kunne du bruge System.currentTimeMillis() til noget
Avatar billede arne_v Ekspert
25. oktober 2003 - 14:06 #2
Du kan da altid skrive din egen random generator.
Avatar billede laurits Nybegynder
25. oktober 2003 - 14:07 #3
fordi jeg programmere en aJile processor der ikke bruger Java standard biblioteket...
Avatar billede arne_v Ekspert
25. oktober 2003 - 14:07 #4
Så skriver du din egen !
Avatar billede laurits Nybegynder
25. oktober 2003 - 14:07 #5
ja det kan jeg sikkert arne v.  Men hvordan??
Avatar billede arne_v Ekspert
25. oktober 2003 - 14:10 #6
Den mest almindelige type er LCG:

du staretre med et seed

og så opdaterer du seed:
  seed = (a * seed + b) % c;

og:
  rannum = seed;
Avatar billede laurits Nybegynder
25. oktober 2003 - 14:12 #7
den der kræver sgu lige en forklaring.......
hvad er 'seed'? et bestemt ciffer
og hvad er rannum??
Avatar billede arne_v Ekspert
25. oktober 2003 - 14:14 #8
Her er et seimpelt eksempel:

public class MyRan {
    private int seed;
    public MyRan(int seed) {
        this.seed = seed;
    }
    public int next() {
        seed = (125 * seed) % 2796203;
        return seed;
    }
    public static void main(String[] args) {
        MyRan rng = new MyRan(12345);
        for(int i = 0; i < 10; i++) {
            System.out.println(rng.next());
        }
    }
}
Avatar billede arne_v Ekspert
25. oktober 2003 - 14:14 #9
Eksemplet var en af de gode algoritmer tilbage sidste i 60'erne - der er
sket meget siden !
Avatar billede arne_v Ekspert
25. oktober 2003 - 14:15 #10
seed er en start værdi.

Man kan evt. bruge (int)System.currentTimeMillis() som foreslået af
repsak.
Avatar billede arne_v Ekspert
25. oktober 2003 - 14:16 #11
Man kan nemt transformere fra int til double.

Udvidet eksempel:

public class MyRan {
    private int seed;
    public MyRan(int seed) {
        this.seed = seed;
    }
    public int nextInt() {
        seed = (125 * seed) % 2796203;
        return seed;
    }
    public double nextDouble() {
        seed = (125 * seed) % 2796203;
        return (seed/2796203.0);
    }
    public static void main(String[] args) {
        MyRan rng = new MyRan(12345);
        for(int i = 0; i < 10; i++) {
            System.out.println(rng.nextInt());
        }
        for(int i = 0; i < 10; i++) {
            System.out.println(rng.nextDouble());
        }
    }
}
Avatar billede laurits Nybegynder
25. oktober 2003 - 14:21 #12
okay, jeg prøver at 'lege' lidt med det....
Avatar billede arne_v Ekspert
25. oktober 2003 - 14:22 #13
En anden LCG som er lidt bedre:

public class MyRan {
    private long seed;
    public MyRan(int seed) {
        this.seed = seed;
    }
    public int nextInt() {
        seed = (16807 * seed) % Integer.MAX_VALUE;
        return (int)seed;
    }
    public double nextDouble() {
        seed = (16807 * seed) % Integer.MAX_VALUE;
        return (seed/(double)Integer.MAX_VALUE);
    }
    public static void main(String[] args) {
        MyRan rng = new MyRan(12345);
        for(int i = 0; i < 10; i++) {
            System.out.println(rng.nextInt());
        }
        for(int i = 0; i < 10; i++) {
            System.out.println(rng.nextDouble());
        }
    }
}
Avatar billede arne_v Ekspert
25. oktober 2003 - 14:26 #14
Du må endelig sige til hvir du har yderligere spørgsmål.

Random number generatorer er noget jeg ved lidt om.
Avatar billede laurits Nybegynder
25. oktober 2003 - 14:28 #15
okay det skal jeg gøre. Jeg arbejder lidt videre med dine forslag og vender tilbage hvis det driller.
Takker for assistancen..
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester