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 tema
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