Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Высчитывание комиссии (https://javascript.ru/forum/misc/58714-vyschityvanie-komissii.html)

Николай777CR 07.10.2015 19:24

Цитата:

Сообщение от Lemme (Сообщение 391151)
40 * 0.1 = 4

Благодарю) у вас превосходное чувство юмора!

Lemme 07.10.2015 19:38

Моя твоя не понимать, друг.

Но, вот эмуляция того, что ты расписал.

// каждое число - кол-во вещей, которые положил пользователь.
var userItems = [60, 40];

// Получаем вещи, которые положил победитель
// Победил тот, кто положил больше.
var winner = Math.max.apply(null, userItems);

// получаем сумму всех вещей.
var items = userItems.reduce(function(a, b) { 
	return a + b;
});

// получаем 10% комиссии. (сумма всех вещей - вещи победителя) * 0.1
var commission = (items - winner) * 0.1;


alert(commission + '%');

Николай777CR 07.10.2015 21:04

Спасибо, а как добавить элемент рандомности. Ну вот может выиграь и второй игрок, но у него меньше шансов)

Lemme 07.10.2015 21:29

Не знаю я алгоритмов, но первое, что приходит в голову:

function rand(chance) {
	var rnd = Math.round(Math.random() * 100);
    return rnd + chance >= 100 ? true : false;
}

function getTheWinner(items) {
    for (var i = 0; i < items.length; i++) {
    	if (rand(items[i])) {
        	return items[i];
        }
    }
    
    return getTheWinner(items);
}

alert(getTheWinner([60, 40]));

Николай777CR 07.10.2015 21:31

Спасибо

Lemme 07.10.2015 21:51

Слегка изменил функцию getTheWinner, ибо она каждый раз проходила по всем элементам массива, даже если победитель был найден.

Учти, что шанс = кол-ву предметов.


Часовой пояс GMT +3, время: 14:39.