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...)

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>