Имитация лотерейных ставок.
После розыгрыша 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:03. |