3
respostas

Definir número randômico entre 2 uitextfields

Bom dia, Estou batendo cabeça para desenvolver o código em que há 3 UITextFields, 1 para inserir o número mínimo, 1 para o número máximo e 1 de exceções. Por exemplo, intervalo entre 5 (mínimo) e 18 (máximo) exceto 7, 9, 13 e 14 (exceções). Isso me retornaria 5, 6, 8, 10, 11, 12, 15, 16, 17 e 18 (aleatóriamente). Porém, quero que exiba um de cada vez sem se repetir. já estou batendo cabeça pensando isso há semanas... alguém pode dar um horizonte para seguir, por favor? (risos...)

Garanta sua matrícula hoje e ganhe + 2 meses grátis

Continue sua jornada tech com ainda mais tempo para aprender e evoluir

Quero aproveitar agora
3 respostas

Oi Allan, tudo bem?

Conseguiu resolver esse algoritmo?

Abs.

Olá Ândriu, Ainda não consegui um resultado satisfatório, porque consegui apenas que houve o sorteio dos números com a subtração (exceções), mas ainda se repetem.

Oi Allan tudo bem?

Não manjo nada de Swift mas fiz o algoritmo com Javascript. Como vi no seu perfil que sabe Javascript acho que o código vai te ajudar.

<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title> Definir número randômico entre 2 uitextfields </title>
</head>

<body>
    <input id="minimo" placeholder="Mínimo" type="number">
    <input id="maximo" placeholder="Máximo" type="number">
    <input id="excecao" placeholder="Digite as exceções separadas por vírgula">
    <button onclick="Main()">Gerar</button>

    <script>
        function getRandomInt(min, max) {
            min = Math.ceil(min);
            max = Math.floor(max);
            return Math.floor(Math.random() * (max - min)) + min;
        }

        function documentWriteLine(string) {
            let p = document.createElement("p");
            p.innerText = string;
            document.body.appendChild(p);
        }

        function shuffle(array) {
            let counter = array.length;

            // While there are elements in the array
            while (counter > 0) {
                // Pick a random index
                let index = Math.floor(Math.random() * counter);

                // Decrease counter by 1
                counter--;

                // And swap the last element with it
                let temp = array[counter];
                array[counter] = array[index];
                array[index] = temp;
            }

            return array;
        }


        function flushArray(array) {

            let vetorString = "";
            for (let k = 0; k < array.length; k++) {
                if (vetorString == "") {
                    vetorString = array[k];
                } else {
                    vetorString = vetorString + "," + array[k];
                }
            }
            documentWriteLine(vetorString);
        }

        function Main() {
            let vetor = [];
            let minimo = document.getElementById("minimo").value;
            let maximo = document.getElementById("maximo").value;
            let excecao = document.getElementById("excecao").value;
            let excecaoVetor = excecao.split(",");



            for (let numero = minimo; numero <= maximo; numero++) {
                let pularExcecao = false;
                for (let k = 0; k < excecao.length; k++) {
                    if (numero == excecao[k]) {
                        pularExcecao = true;
                        break;
                    }
                }
                if (pularExcecao == false) {
                    vetor.push(numero);


                }



            }

            shuffle(vetor);

            flushArray(vetor);




        }


    </script>
</body>

</html>