Имитация лотерейных ставок.
После розыгрыша 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)); |
Цитата:
Маленький программист :"3, цикл в строке 8 лишняя трата ... и весь алгоритм скрипта загадка ... |
Маленький программист :"3,
вы определитесь у вас либо 20 * 19 * 18 * 17 всего комбинаций или 20 * 20 * 20 * 20 ? |
Маленький программист :"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> |
У меня вообще неправильно, что-то заклинило совсем)
Хотя у вас вроде тоже. Должно быть не важно в каком порядке числа. Допустим наша комбинация 1 3 11 13 А сгенерировано 1 13 11 3 - все числа совпали. А код такой длинный получился, потому что методы перебора я не знал, так-как в видео-курсах что я смотрел такого не было. Но теперь знаю) |
Цитата:
Цитата:
|
Часовой пояс GMT +3, время: 06:15. |