egal wieviel mal meine program ausgeführt wird.
????colorTMap.put(integerRandom(), color());
Was heisst eindeutig geliefert? Geht's darum, dass in der Sammlung keine doppelten Werte enthalten sind? Dann hilft eventuell ein Set z.B. TreeSetsondern darum, dass ich entsprechende values eindeutig geliefert bekomme
was ist jetzt das Problem ?in meinem Fall brauche ich farben:
Color color = new Color(rot, gruen, blau);
----------
TreeMap colorTMap = new TreeMap();
colorTMap.put(integerRandom(), color());
wenn random mir eine 5 liefert muss eine bestimmte Farbe eindeutig sein(zBsp schwarz),
wenn random eine 7 liefert -> immer blau usw
Es geht nicht darum welche keys ich nehme, sondern darum, dass ich entsprechende values eindeutig geliefert bekomme
Ich kann zBsp color(123, 233, 124) mit einem wert(key) multiplizieren, dann werden meine Colors immer eindeutig von key abhängen. Aber dann wird meine Farbe um so heller, wenn id grösser ist-> muss aber nicht unbedingt sein.
class ColorTest {
private final int ANZAHL = 255;
void test() {
Random random = new Random(ANZAHL);
ColorMap cm = new ColorMap();
for (int i = 0; i < 255; i++) {
if (cm.containsKey(i)) {
Color color = cm.get(i);
}
}
}
class ColorMap extends TreeMap<Integer, Color> {
public ColorMap() {
Random random = new Random(ANZAHL);
for (int i = 0; i < 255; i++) {
put(i, new Color(random.nextInt(), random.nextInt(), random.nextInt()));
}
}
}
}
Map<Integer, Color> map = new TreeMap<Integer, Color>();
map.put(0, Color.WHITE);
map.put(2, Color.BLUE);
map.put(3, Color.RED);
map.put(4, Color.RED);
for (int i=0; i<map.size(); i++)
System.out.println(map.get(i));
sowas??
Java:Map<Integer, Color> map = new TreeMap<Integer, Color>(); map.put(0, Color.WHITE); map.put(2, Color.BLUE); map.put(3, Color.RED); map.put(4, Color.RED); for (int i=0; i<map.size(); i++) System.out.println(map.get(i));
public static Color getRandomColor(int overleap) {
int values = (256 / (++overleap)) - 1;
Random rand = new Random();
int red = rand.nextInt(values) * overleap;
int green = rand.nextInt(values) * overleap;
int blue = rand.nextInt(values) * overleap;
return new Color(red, green, blue);
}
...bej getRandomColor(5); soll aber immer das gleiche color rauskommen(schwarz)also willst du doch so was:
der Aufruf [c]getRandomColor(0)[/c] liefert alle möglichen Kombinationen zurück (also 256^3; z.B. "175,203,48"), der Aufruf [c]getRandomColor(4)[/c] nur jede 5^3te Möglichkeit, also z.B. "205,170,35".Java:public static Color getRandomColor(int overleap) { int values = (256 / (++overleap)) - 1; Random rand = new Random(); int red = rand.nextInt(values) * overleap; int green = rand.nextInt(values) * overleap; int blue = rand.nextInt(values) * overleap; return new Color(red, green, blue); }
public static Color getColor(int key) {
int red = key % 255;
key /= red;
int green = key % 255;
int blue = key / green;
return new Color(red, green, blue);
}
Ich verstehe dich einfach nicht... (und du verstehst wohl das englische wort overleap und meinen Code nicht) - aber wenn du mit einer Value einen Color haben willst, machs so:
So ist schwarz 0 und weiss 16581375Java:public static Color getColor(int key) { int red = key % 255; key /= red; int green = key % 255; int blue = key / green; return new Color(red, green, blue); }