2016-02-06 2 views
0

Итак, у меня возникла проблема, связанная с выбором победителя на основе процента.JavaScript: Выберите процентные числа

Теперь для этого метода я выбираю случайное десятичное число между 1 - 0. ПРИМЕР: [.55 или .33] И когда я сгенерирую это число, процент выбирается в зависимости от того, какой случайный десятичный знак выбран.

Пример этого:

Числа вычисляются: пользователя 1 шанс> 25%. Пользователь 2 Шанс> 75%.

Так что я пытаюсь выяснить, как выбрать пользователя на основе десятичной дроби.

У меня есть код JavaScript здесь для некоторых из них, я не знаю остальное, и я готов принять любую помощь.

<!DOCTYPE html> 
<html> 
<head> 
<script> 
function nowGet(){ 
    var picked = Math.random() * (1 - 0) + 0; 
    var numb1 = .25; 
    var numb2 = .75; 

    if(numb1 >= picked && picked <= numb1){ 
     alert("25% chance wins with win %: " + picked); 
    }else if(numb2 >= picked && picked <= numb2){ 
     alert("75% chance wins with win %: " + picked); 
    }else{ 
     alert("Nothing was picked. win %: " + picked); 
    } 
} 

</script> 
</head> 

<body> 

<h1>My Web Page</h1> 

<p id="demo">A Paragraph</p> 

<button type="button" onclick="nowGet()">Try it</button> 

</body> 
</html> 

ответ

0

То, что вы пытаетесь достичь, - это получить самое близкое число из массива чисел. Вот отличный ответ на ваш вопрос: https://stackoverflow.com/a/8584940/612847

адаптированного к вашему конкретному сценарию, вот решение:

function closest (num, arr) { 
    var curr = arr[0]; 
    var diff = Math.abs (num - curr); 
    for (var val = 0; val < arr.length; val++) { 
     var newdiff = Math.abs (num - arr[val]); 
     if (newdiff < diff) { 
      diff = newdiff; 
      curr = arr[val]; 
     } 
    } 
    return curr; 
} 

var array = [.25, .75]; 
var number = Math.random(); 
var winner = closest(number, array); 
console.log(winner);