2016-07-27 3 views
-4

Допустим, у меня есть 3 типа Integer:Назначить значение Integer между двумя постоянными значениями?

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

Теперь я хочу a быть или 25 или 10, но от случайного не что-то вроде:

a = b; 

Я хочу что-то вроде, если заявление:

a = b || c; 

Как я могу это достичь?

+3

Вы, должно быть, столкнулись с поиском googled перед тем, как спросить? – jayeshsolanki93

+0

@ jayeshsolanki93 Возможно, я искал ее в Google, и я не нашел ответа? :) – Chunrand

ответ

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

Math.random() возвращает случайное число от 0 до 1, так что если вы хотите 50% шанс что-то истинно, то просто проверить, если это меньше, чем (или больше) 0,5.

4

один способ это сделать, взяв Миллис времени как:

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

Если разрешение 'System.currentTimeMillis' равно четное число, в этом случае он всегда будет использовать b. – immibis

+0

Это также будет возвращать одно и то же число несколько раз, если вы запросите его достаточно быстро (быстрее разрешения). – Hulk

+0

, тогда вам нужно использовать nano secs для этого, если вы используете его быстро, кстати, FYI Math.random(), используя ту же логику для генерации случайного числа, просто разделите его на число, чтобы сделать его между 0 и 1 –

2

Попробуйте следующий код: ответ

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

@immibis' является самым простым способом для достижения этой цели.

Для контролируемости, я бы настоятельно рекомендую вам использовать явный Random экземпляр, а не с помощью Math.random():

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

Это позволяет вводить макет Random экземпляра, что позволяют фиксировать поведение, когда вам нужно для проверки конкретного поведения. Недетерминированные тесты - это боль, и их следует избегать.

Смежные вопросы