Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

212
Visualizações
Cómo generar X números aleatorios, donde cada número está entre un rango de A y B y la suma total de todos los números tiene que ser Y

Estoy tratando de codificar (JavaScript o VB.NET) un algoritmo para generar x números aleatorios. Cada número aleatorio debe estar dentro de un cierto rango y la suma total de todos los números debe ser igual a una constante. Particularmente, no necesito el código exacto (si lo necesito, siempre puedo preguntar cuándo empiezo a depurar), sino solo la lógica detrás de todo.

En mi caso particular: necesito generar 4 números aleatorios, cada uno entre 0 y 10, y la suma total de los números generados aleatoriamente debe ser 24.

Si necesita más información: por favor pregunte. Gracias de antemano por tratar de resolver esto conmigo 🙂.

EDITAR : Debería haber agregado lo que ya probé (el código está en VB.NET pero no es tan difícil, así que ...) Según esta respuesta de StackOverflow, esto es lo que ya probé (aunque no funciona):

 Dim intAverageNumberMark As Integer = 24 / 4 Dim intOverMark As Integer = 0 Dim intGeneratedRandomNumber As Integer = 0 Dim intCurrentSumOfRandomNumbers = 0 For intCounter = 0 To intNumberOfTowers - 1 intGeneratedRandomNumber = RandomNumber(0 + intGeneratedRandomNumber, 10) intOverMark = If(intGeneratedRandomNumber > intAverageNumberMark, intGeneratedRandomNumber - intAverageNumberMark, 0) If intCounter = intNumberOfTowers - 1 Then intNumbers(intCounter) = 24 - intCurrentSumOfRandomNumbers End If intNumbers(intCounter) = intGeneratedRandomNumber intCurrentSumOfRandomNumbers += intGeneratedRandomNumber Debug.Print(intGeneratedRandomNumber) Next

intNumbers() es una matriz declarada con Dim intNumbers(7) As Integer .

about 4 years ago · Juan Pablo Isaza
3 Respostas
Responde à pergunta

0

sum = 0; loop generate new number if sum + new number <= constant{ sum += new number break out of loop }
about 4 years ago · Juan Pablo Isaza Relatório

0

El enfoque más fácil es tomar un método de fuerza brte y generar todas las combinaciones posibles y tomar una selección aleatoria de este conjunto de resultados.

 function generate(from, to, size, sum) { function iter(right, delta) { if (delta < 0) return; if (!delta && right.length === size) return result.push(right); if (!delta || right.length === size) return; for (let i = from; i <= Math.min(delta, to); i++) iter([...right, i], delta - i); } const result = []; iter([], sum); return result; } const result = generate(0, 10, 4, 24); console.log(result.length); document.getElementById('out').innerHTML += result.map(a => a.map(v => v.toString().padStart(2, ' ')).join(' ')).join('\n');
 <pre id="out"></pre>

about 4 years ago · Juan Pablo Isaza Relatório

0

Si todo lo que está buscando es el algoritmo, este es el enfoque que tomaría:

  1. comience con su objetivo total 'C'
  2. Genere un número aleatorio 'r' en su rango deseado.
  3. comprobar si r > C, en caso afirmativo, reducir r a C
  4. restar r de C (actualizando C fuera del bucle)
  5. repetir desde 1 si C != 0

Una cosa que creo que debo señalar es que los números se volverán cada vez más no aleatorios a medida que C se acerca a 0; la velocidad con la que esto ocurre depende de los límites superior e inferior de su número aleatorio en comparación con C.

También puede averiguar algunos puntos de datos adicionales sobre este algoritmo, como cuántas veces se ejecuta el ciclo (cuántos números generó).

about 4 years ago · Juan Pablo Isaza Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda