2016-07-27 7 views
-4

Können sagen, ich 3 Ganze Zahlen haben:Weisen Sie Integer einen Wert zwischen zwei konstanten Werten zu?

int a, b, c; 
b = 25; 
c = 10; 

Jetzt habe ich a sein entweder 25 oder 10, sondern durch gelegentliches wollen nicht so etwas wie:

a = b; 

ich so etwas wie in if-Anweisung wollen:

a = b || c; 

Wie kann ich es erreichen?

+3

Sie sollten gegoogelt haben, bevor Sie fragen, vielleicht? – jayeshsolanki93

+0

@ jayeshsolanki93 vielleicht googelte ich es und ich habe keine Antwort gefunden? :) – Chunrand

Antwort

7
if(Math.random() < 0.5) 
    a = 25; 
else 
    a = 10; 

Math.random() gibt eine Zufallszahl von 0 bis 1, wenn Sie also eine 50% ige Chance, etwas wahr wollen, nur überprüfen, ob es kleiner als (oder größer als) 0,5.

4

ein Weg ist, wie, indem man die millis der Zeit zu tun:

if(System.currentTimeMillis() % 2 == 0){ 
    a=b; 
} else{ 
    a=c; 
} 
+2

Wenn die Auflösung von 'System.currentTimeMillis' keine gerade Zahl ist, wird in diesem Fall immer b verwendet. – immibis

+0

Dies wird auch die gleiche Zahl mehrmals zurückgeben, wenn Sie es schnell genug abfragen (schneller als die Auflösung). – Hulk

+0

dann müssen Sie Nano-Sekunden für das verwenden, wenn Sie es schnell verwenden, übrigens FYI Math.random() mit der gleichen Logik, um die Zufallszahl zu generieren, teilen Sie es einfach mit Zahl, um es zwischen 0 bis 1 zu machen –

2

Versuchen Sie, den folgenden Code:

Random rand = new Random(); 
int myRandom = rand.nextInt(2); // will be 0 or 1 
if (myRandom == 0) { 
    a=b; 
} else { 
    a=c; 
} 
3

@immibis' Antwort ist der einfachste Weg, dies zu erreichen.

Für Testbarkeit, würde ich dringend empfehlen, dass Sie eine explizite Random Instanz zu verwenden, anstatt Math.random() mit:

static int pickRandomValue(Random r, int b, int c) { 
    return r.nextInt(2) == 1 ? b : c; 
} 

Dies Ihnen einen Mock Random Instanz injizieren kann, so dass Sie das Verhalten beheben, wenn Sie brauchen um spezifisches Verhalten zu testen. Nicht-deterministische Tests sind ein Schmerz und sollten vermieden werden.