Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 04.01.2017, 00:24
Интересующийся
Отправить личное сообщение для Маленький программист :"3 Посмотреть профиль Найти все сообщения от Маленький программист :"3
 
Регистрация: 26.12.2016
Сообщений: 20

Имитация лотерейных ставок.
После розыгрыша 1 миллиарда на новый год стало интересно посчитать, сколько надо примерно раз сделать ставку на одни и те же числа, чтобы она сыграла. В связи с этим решил немножко поколдовать на JavaScript.
Скрипт ниже вычисляет, сколько раз нужно поставить определенный набор чисел, чтобы выиграть.
Хочу спросить, может я все сделал криво и можно намного лучше, если есть советы по оптимизации, обязательно подсказывайте)
var myComb = [1, 3, 11, 13]; // Ваша комбинация
function winner(myComb){
	var counter = 0;
	var matchArray = [];
	function generWinComb(){
			var winComb = [];
			var min = 1, max = 20;
			for(var i = 0; i < 4; i++){
				winComb[i] = min + Math.floor(Math.random() * (max + 1 - min));
			}
			return winComb;
		}
	while(true){
		for(var i = 0; i < myComb.length; i++){
			if(myComb[i] == generWinComb()[i]){
				matchArray[i] = true;
			}
			else{
				matchArray[i] = false;
			}
		}
		// Когда уже получен массив с true и false
		for(var i = 0; i < myComb.length; i++){
			if(matchArray[i] == true){
				continue;
			}
			else{
				counter++;
				break;
			}
		}
		if(i == myComb.length && matchArray[i-1] == true){
				return counter;
			}
	}
}
document.write(winner(myComb));
Ответить с цитированием
  #2 (permalink)  
Старый 04.01.2017, 00:57
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,072

Сообщение от Маленький программист :&quot Посмотреть сообщение
Скрипт ниже вычисляет,
интересно что?
Маленький программист :"3,

цикл в строке 8 лишняя трата ... и весь алгоритм скрипта загадка ...
Ответить с цитированием
  #3 (permalink)  
Старый 04.01.2017, 01:00
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,072

Маленький программист :"3,
вы определитесь у вас либо 20 * 19 * 18 * 17 всего комбинаций или 20 * 20 * 20 * 20 ?
Ответить с цитированием
  #4 (permalink)  
Старый 04.01.2017, 01:11
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,072

Маленький программист :"3,
всё тоже что у вас но покороче
<script>
var myComb = [1, 3, 11, 13];

function winner(myComb) {
    var counter = 0;

    function generWinComb() {
        var min = 1,
            max = 20;
        return min + Math.floor(Math.random() * (max + 1 - min))
    }
    while (myComb.some(function(a) {
            return a != generWinComb()
        })) counter++;
    return counter
}
document.write(winner(myComb));
  </script>
Ответить с цитированием
  #5 (permalink)  
Старый 05.01.2017, 20:49
Интересующийся
Отправить личное сообщение для Маленький программист :"3 Посмотреть профиль Найти все сообщения от Маленький программист :"3
 
Регистрация: 26.12.2016
Сообщений: 20

У меня вообще неправильно, что-то заклинило совсем)
Хотя у вас вроде тоже.
Должно быть не важно в каком порядке числа.
Допустим наша комбинация 1 3 11 13
А сгенерировано 1 13 11 3 - все числа совпали.
А код такой длинный получился, потому что методы перебора я не знал, так-как в видео-курсах что я смотрел такого не было. Но теперь знаю)
Ответить с цитированием
  #6 (permalink)  
Старый 05.01.2017, 20:59
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,072

Сообщение от Маленький программист :&quot Посмотреть сообщение
Должно быть не важно в каком порядке числа.
тогда достаточно
Сообщение от рони
20 * 19 * 18 * 17
комбинаций чтобы наверняка выиграть
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
имитация клика dragos jQuery 1 29.08.2016 07:18
имитация клика dragos Events/DOM/Window 0 28.08.2016 19:09
Имитация рандомного движения элементов Divizon Events/DOM/Window 3 19.08.2015 22:06
Имитация нажатия стрелок влево/вправо platitude Events/DOM/Window 14 30.06.2012 18:24
Имитация нажатия на ссылку martinss AJAX и COMET 6 28.05.2012 20:35