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???
Annonceindlæg fra Kommando
25. oktober 2003 - 14:05
#1
hvorfor har du ikke det??? Men måske kunne du bruge System.currentTimeMillis() til noget
25. oktober 2003 - 14:06
#2
Du kan da altid skrive din egen random generator.
25. oktober 2003 - 14:07
#3
fordi jeg programmere en aJile processor der ikke bruger Java standard biblioteket...
25. oktober 2003 - 14:07
#4
Så skriver du din egen !
25. oktober 2003 - 14:07
#5
ja det kan jeg sikkert arne v. Men hvordan??
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;
25. oktober 2003 - 14:12
#7
den der kræver sgu lige en forklaring....... hvad er 'seed'? et bestemt ciffer og hvad er rannum??
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()); } } }
25. oktober 2003 - 14:14
#9
Eksemplet var en af de gode algoritmer tilbage sidste i 60'erne - der er sket meget siden !
25. oktober 2003 - 14:15
#10
seed er en start værdi. Man kan evt. bruge (int)System.currentTimeMillis() som foreslået af repsak.
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()); } } }
25. oktober 2003 - 14:21
#12
okay, jeg prøver at 'lege' lidt med det....
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()); } } }
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.
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..
Kurser inden for grundlæggende programmering