Generando programas de 1X2 con una IA, Inteligencia Artificial

Programas, sistemas, condiciones, filtros...
Responder
Avatar de Usuario
juanknito
11
11
Mensajes: 584
Registrado: Dom 20 Mar, 2016 12:16 pm
Ubicación: Tenerife

Generando programas de 1X2 con una IA, Inteligencia Artificial

Mensaje por juanknito »

Saludos,

pues he tonteado con la aplicación de IA, de moda, el Chat.opneai, y cual fue mi sorpresa, al decir que podía programar en Qbasic, pero al ser muy antiguo, me dijo que era mejor que lo hiciera en Phyton, JAJAJAJA

Se abre un inmenso campo de investigación de nuestro hobby 1X2 ¡?

le pregunté si podría generar un código en esos idiomas de programación para generar columnas, y me los hizo, son éstos, que adjunto seguidamente.

una cosa si me puso muy clara, me espetó: " la quiniela es un juego de Azar, y difícil de acertar, aún sabiendo % de probabilidad de aparición de signos,...."
aviso a navegantes ¡?

los codigos: aquí el de Phyton

# Generar una columna de quiniela española con 14 partidos
quiniela = []
for i in range(14):
signo = random.randint(1,3)
if signo == 1:
quiniela.append("1")
elif signo == 2:
quiniela.append("X")
else:
quiniela.append("2")
print(quiniela)

aquí el codigo generado por IA de Qbasic (pantallazo):


Imagen

el Karma Instantáneo existe, REPARTE con los que COMPARTEN.
Avatar de Usuario
EQUISDOS32
15
15
Mensajes: 12181
Registrado: Vie 29 Ago, 2008 2:36 pm

Re: Generando programas de 1X2 con una IA, Inteligencia Artificial

Mensaje por EQUISDOS32 »

No es exactamente para quinielas, pero por lo que pude leer hicieron el código a traves de IA Inteligencia Artificial

Descargué en un foro extranjero un código en html, que al pegarlo en un archivo txt y guardar el archivo txt con formato html, al abrir el archivo html con un navegador se convertía en una especie de generador de números aleatorios.

En principio por lo que pude traducir de la pagina lo utilizaban para generar números para jugar a la ruleta, es decir, marcaban los últimos 10 11 12 13 números que habían salido en la ruleta, y generaban 1000 2000 3000 números aleatorios del 0 al 36 , después del calculo aparecían los números por orden de veces que mas aparecia cada numero de izquierda a derecha y de arriba hacia abajo.

En principio el panel de números era de 37 números del 0 al 36, pero yo lo modifiqué en el código para que fuese desde el numero 1 al 49 para hacer unas pruebas y unos cálculos para juegos de primitiva bonoloto y todo eso.

Como se puede ver en la imagen, selecciono los números 5,6,17,18,19,29,30,31,41,42 que son 10 números en total, hago mil simulaciones y cuando termina el calculo, los números salen ordenados junto a unas barras de colores, el orden es de los que mas veces se repiten hasta los que menos se repiten de izquierda a derecha y de arriba hacia abajo.

También se puede ver en la imagen que los 10 numeros que yo he seleccionado, se ven de color rojo en la parte de abajo donde están todos los números generados.

Ahora es cuando me gustaría pedir ayuda, pero claro, tampoco se si sera fácil o difícil.

¿ Habría alguna forma de modificar el código para que entre los números ordenados de mas a menos apariciones junto a las barras de colores, no hubiese ningún numero de entre los 10 seleccionados en el panel ?

Por ejemplo, en la imagen en una de las generaciones de 1000 números, podemos ver que los números 18 y 19 están en la posición 4 y 5 junto a las barras de colores, es decir, que en una de las mil generaciones de números, están entre los 4 y 5 números que mas se han repetido, pues bien, a mi me gustaría que en ese ordenamiento de números junto a las barras de colores, no estuviera ninguno de los números marcados arriba en el panel, y que se ven abajo del todo de color rojo.

¿ Alguien sabe si sería muy difícil modificar el código o como se podría hacer ? Si alguien me ayuda le estaría muy agradecido, debajo de la imagen inserto el código, ese código se copia y se pega en un archivo txt, se guarda como html y al abrir con firefox edge chrome etc etc podrá ver lo mismo que en la imagen.


Imagen

Código: Seleccionar todo

<!DOCTYPE html>
<html>
<head>
    <style>
        .keyboard {
            display: flex;
            flex-wrap: wrap;
            gap: 5px;
            max-width: 600px;
            margin: auto;
        }

        .key {
            display: flex;
            justify-content: center;
            align-items: center;
            width: 40px;
            height: 40px;
            background-color: gray;
            font-weight: bold;
            cursor: pointer;
            border: 1px solid black; /* Añadir el borde negro */
            color: black; /* Color del texto negro */
        }

        .key.selected {
            background-color: coral;
        }
        
        .key-green {
            background-color: green;
            color: white;
        }
        
        .key-odd {
            background-color: red;
            color: white;
        }

        .key-even {
            background-color: black;
            color: white;
        }

        #results {
            margin-top: 10px;
            font-weight: bold;
        }

        .result-number {
            display: inline-block;
            margin-right: 5px;
        }

        .result-bar {
            display: inline-block;
            height: 20px;
            margin-bottom: 5px;
        }

        #simulation-results {
            margin-top: 20px;
            font-weight: bold;
        }

        .simulation-number {
            display: inline-block;
            margin-right: 5px;
            font-weight: bold;
        }

        .simulation-number.highlight {
            color: red;
        }
    </style>
</head>
<body>
    <div class="keyboard">
        <div class="key key-odd" onclick="toggleSelection(1)">1</div>
        <div class="key key-even" onclick="toggleSelection(2)">2</div>
        <div class="key key-odd" onclick="toggleSelection(3)">3</div>
        <div class="key key-even" onclick="toggleSelection(4)">4</div>
        <div class="key key-odd" onclick="toggleSelection(5)">5</div>
        <div class="key key-even" onclick="toggleSelection(6)">6</div>
        <div class="key key-odd" onclick="toggleSelection(7)">7</div>
        <div class="key key-even" onclick="toggleSelection(8)">8</div>
        <div class="key key-odd" onclick="toggleSelection(9)">9</div>
        <div class="key key-even" onclick="toggleSelection(10)">10</div>
        <div class="key key-even" onclick="toggleSelection(11)">11</div>
        <div class="key key-odd" onclick="toggleSelection(12)">12</div>
        <div class="key key-even" onclick="toggleSelection(13)">13</div>
        <div class="key key-odd" onclick="toggleSelection(14)">14</div>
        <div class="key key-even" onclick="toggleSelection(15)">15</div>
        <div class="key key-odd" onclick="toggleSelection(16)">16</div>
        <div class="key key-even" onclick="toggleSelection(17)">17</div>
        <div class="key key-odd" onclick="toggleSelection(18)">18</div>
        <div class="key key-odd" onclick="toggleSelection(19)">19</div>
        <div class="key key-even" onclick="toggleSelection(20)">20</div>
        <div class="key key-odd" onclick="toggleSelection(21)">21</div>
        <div class="key key-even" onclick="toggleSelection(22)">22</div>
        <div class="key key-odd" onclick="toggleSelection(23)">23</div>
        <div class="key key-even" onclick="toggleSelection(24)">24</div>
        <div class="key key-odd" onclick="toggleSelection(25)">25</div>
        <div class="key key-even" onclick="toggleSelection(26)">26</div>
        <div class="key key-odd" onclick="toggleSelection(27)">27</div>
        <div class="key key-even" onclick="toggleSelection(28)">28</div>
        <div class="key key-even" onclick="toggleSelection(29)">29</div>
        <div class="key key-odd" onclick="toggleSelection(30)">30</div>
        <div class="key key-even" onclick="toggleSelection(31)">31</div>
        <div class="key key-odd" onclick="toggleSelection(32)">32</div>
        <div class="key key-even" onclick="toggleSelection(33)">33</div>
        <div class="key key-odd" onclick="toggleSelection(34)">34</div>
        <div class="key key-even" onclick="toggleSelection(35)">35</div>
        <div class="key key-even" onclick="toggleSelection(36)">36</div>
        <div class="key key-odd" onclick="toggleSelection(37)">37</div>
        <div class="key key-even" onclick="toggleSelection(38)">38</div>
        <div class="key key-odd" onclick="toggleSelection(39)">39</div>
        <div class="key key-even" onclick="toggleSelection(40)">40</div>
        <div class="key key-even" onclick="toggleSelection(41)">41</div>
        <div class="key key-odd" onclick="toggleSelection(42)">42</div>
        <div class="key key-even" onclick="toggleSelection(43)">43</div>
        <div class="key key-odd" onclick="toggleSelection(44)">44</div>
        <div class="key key-even" onclick="toggleSelection(45)">45</div>
        <div class="key key-odd" onclick="toggleSelection(46)">46</div>
        <div class="key key-even" onclick="toggleSelection(47)">47</div>
        <div class="key key-even" onclick="toggleSelection(48)">48</div>
        <div class="key key-odd" onclick="toggleSelection(49)">49</div>
    </div>

    <label for="quantity-to-generate">Cantidad de números a generar:</label>
    <select id="quantity-to-generate">
        <option value="50">50</option>
        <option value="100">100</option>
        <option value="250">250</option>
        <option value="500">500</option>
        <option value="1000">1000</option>
        <option value="2000">2000</option>
        <option value="3000" selected>3000</option> <!-- Establecido en 3000 de forma predeterminada -->
        <option value="4000">4000</option>
        <option value="5000">5000</option>
    </select>

    <label for="current-quantity">Cantidad de números configurados actualmente:</label>
    <select id="current-quantity" onchange="updateMaxSelectedNumbers()">
        <option value="1">1</option>
        <option value="2">2</option>
        <option value="3">3</option>
        <option value="4">4</option>
        <option value="5">5</option>
        <option value="6">6</option>
        <option value="7">7</option>
        <option value="8">8</option>
        <option value="9">9</option>
        <option value="10" selected>10</option> <!-- Establecido en 10 de forma predeterminada -->
        <option value="11">11</option>
        <option value="12">12</option>
        <option value="13">13</option>
        <option value="14">14</option>
        <option value="15">15</option>
        <option value="16">16</option>
        <option value="17">17</option>
        <option value="18">18</option>
        <option value="19">19</option>
    </select>

    <button onclick="simulate()">Simula <span id="quantity-to-generate-text">3000</span> numeros</button>
    <button onclick="reset()">Reset</button>
    <button onclick="deleteFirstSelected()">Borrar el primer número ingresado</button>
    <div id="results"></div>
    <div id="simulation-results"></div>

    <script>
        var selectedNumbers = [];
        var maxSelectedNumbers = 19;
        var simulationResults = [];

        function updateMaxSelectedNumbers() {
            maxSelectedNumbers = parseInt(document.getElementById("current-quantity").value);
        }

        function toggleSelection(number) {
            selectedNumbers.push(number);

            if (selectedNumbers.length > maxSelectedNumbers) {
                selectedNumbers.shift();
            }

            updateKeyboard();
        }

        function updateKeyboard() {
            var keys = document.getElementsByClassName('key');
            for (var i = 0; i < keys.length; i++) {
                var number = parseInt(keys[i].innerText);
                if (selectedNumbers.includes(number)) {
                    keys[i].classList.add('selected');
                } else {
                    keys[i].classList.remove('selected');
                }
            }
        }

        function simulate() {
            var quantityToGenerate = parseInt(document.getElementById("quantity-to-generate").value);

            simulationResults = [];
            for (var i = 0; i < quantityToGenerate; i++) {
                var randomNumber = Math.floor(Math.random() * 49);
                simulationResults.push(randomNumber);
            }

            var foundNumbers = findNumbers(selectedNumbers, simulationResults);
            if (foundNumbers.length === maxSelectedNumbers) {
                var remainingNumbers = simulationResults.slice(foundNumbers[2] + 1);
                var frequencies = getFrequencies(remainingNumbers);
                var sortedFrequencies = sortFrequencies(frequencies);
                displayResults(sortedFrequencies);
            } else {
                foundNumbers = [];
                simulate();
            }
            displaySimulationResults(simulationResults, foundNumbers);

            document.getElementById("quantity-to-generate-text").innerText = quantityToGenerate;
        }

        function findNumbers(numbersToFind, numbers) {
            var foundNumbers = [];
            var count = 0;
            for (var i = 0; i < numbers.length; i++) {
                if (numbersToFind.includes(numbers[i])) {
                    foundNumbers.push(numbers[i]);
                    count++;
                    if (count === maxSelectedNumbers) {
                        var lastNumberIndex = i;
                        var range = 18;
                        if (lastNumberIndex <= range) {
                            return foundNumbers;
                        } else {
                            foundNumbers = [];
                            count = 0;
                        }
                    }
                }
            }
            foundNumbers = [];
            count = 0;
            return findNumbers(numbersToFind, numbers.slice(1));
        }

        function getFrequencies(numbers) {
            var frequencies = {};
            for (var i = 0; i < numbers.length; i++) {
                var number = numbers[i];
                if (frequencies[number]) {
                    frequencies[number]++;
                } else {
                    frequencies[number] = 1;
                }
            }
            return frequencies;
        }

        function sortFrequencies(frequencies) {
            var sortedFrequencies = [];
            for (var number in frequencies) {
                sortedFrequencies.push([parseInt(number), frequencies[number]]);
            }
            sortedFrequencies.sort(function (a, b) {
                return b[1] - a[1];
            });
            return sortedFrequencies;
        }

        function displayResults(frequencies) {
            var resultsDiv = document.getElementById('results');
            resultsDiv.innerHTML = '';
            for (var i = 0; i < frequencies.length; i++) {
                var number = frequencies[i][0];
                var frequency = frequencies[i][1];
                var resultNumber = document.createElement('span');
                resultNumber.classList.add('result-number');
                resultNumber.innerText = number;
                var resultBar = document.createElement('div');
                resultBar.classList.add('result-bar');
                resultBar.style.width = (frequency * 10) + 'px';
                resultBar.style.backgroundColor = 'rgb(' + getRandomColor() + ')';
                resultsDiv.appendChild(resultNumber);
                resultsDiv.appendChild(resultBar);
            }
        }

        function displaySimulationResults(results, foundNumbers) {
            var simulationResultsDiv = document.getElementById('simulation-results');
            simulationResultsDiv.innerHTML = '';
            for (var i = 0; i < results.length; i++) {
                var result = results[i];
                var numberSpan = document.createElement('span');
                numberSpan.classList.add('simulation-number');
                if (foundNumbers.includes(result)) {
                    numberSpan.classList.add('highlight');
                }
                numberSpan.innerText = result;
                simulationResultsDiv.appendChild(numberSpan);
                if (i < results.length - 1) {
                    simulationResultsDiv.innerHTML += ' - ';
                }
            }
        }

        function getRandomColor() {
            var r = Math.floor(Math.random() * 256);
            var g = Math.floor(Math.random() * 256);
            var b = Math.floor(Math.random() * 256);
            return r + ',' + g + ',' + b;
        }

        function reset() {
            selectedNumbers = [];
            updateKeyboard();
            var resultsDiv = document.getElementById('results');
            resultsDiv.innerHTML = '';
            var simulationResultsDiv = document.getElementById('simulation-results');
            simulationResultsDiv.innerHTML = '';
        }
    </script>
</body>
</html>
Avatar de Usuario
FrankData
12
12
Mensajes: 1690
Registrado: Lun 07 Sep, 2020 11:24 am
Ubicación: Tarragona

Re: Generando programas de 1X2 con una IA, Inteligencia Artificial

Mensaje por FrankData »

EQUISDOS32 escribió:
Sab 27 Ene, 2024 7:02 pm


En principio por lo que pude traducir de la pagina lo utilizaban para generar números para jugar a la ruleta, es decir, marcaban los últimos 10 11 12 13 números que habían salido en la ruleta, y generaban 1000 2000 3000 números aleatorios del 0 al 36 , después del calculo aparecían los números por orden de veces que mas aparecia cada numero de izquierda a derecha y de arriba hacia abajo.
Muy buenas, son sucesos independientes por lo que ese estudio no sirve, ya que un valor x no condiciona que salga un valor y.
Si fuera así sería muy fácil acertar la primitiva y la quiniela, puesto que si sabes que un 1 en el partido 12 te lleva a una X al partido 13, o que jugando esos X números que siempre salen tienes los 6 aciertos.
Al final siempre tendrás la misma probabilidad en cada número, jugar a eso es hacer trampas al solitario.
La ia funciona bien por ejemplo en calcular de probabilidades de cartas en las mesas de poker online, el tema es que esta todo ya tan cargado de eso...
En fin, os lo comento para que no perdáis el tiempo y os genere falsas expectativas
Mi peña aquí ---> https://www.dnp1x2.com/frankdata :money:
Info, seguimiento y contacto ---> https://t.me/FrankData1x2
Less is more :saludo:
Responder