scomponi un numero intero come la somma di 20 numeri interi casuali maggiori di zero diversi fra loro

  • Creatore Discussione Creatore Discussione GerryM
  • Data di inizio Data di inizio

GerryM

Nuovo Utente
12 Dic 2023
1
0
1
Salve a tutti.
Ho un piccolo problema che non riesco a risolvere.
Vorrei, con un codice Javascript, scomporre un numero intero, come la somma di più numeri interi maggiori di zero e diversi fra loro.
Per ora sono riuscito a creare il codice riportato sotto.
Il problema è che mi genera dei numeri interi maggiori di zero, i quali però possono essere uguali fra di loro.
Come posso fare a renderli diversi fra loro?

Codice Javascript:
JavaScript:
const numeroDaScomporre = 30;
const numeroDiTermini = 20;

const risultato = scomponiNumero(numeroDaScomporre, numeroDiTermini);
console.log("Numero da scomporre:", numeroDaScomporre);
console.log("Numeri Generati:", risultato);

function scomponiNumero(numeroDaScomporre, numeroDiTermini) {

    let numeri = [];

    function generaNumeriRandom(min, max) {
      return Math.floor(Math.random() * (max - min + 1)) + min;
    }
 
    let somma = 0;
    for (let i = 0; i < numeroDiTermini - 1; i++) {
      let numeroRandom = generaNumeriRandom(1, numeroDaScomporre - somma - (numeroDiTermini - i - 1));
      numeri.push(numeroRandom);
      somma += numeroRandom;
   }
 
    // Ultimo Numero
    numeri.push(numeroDaScomporre - somma);
 
    return numeri;
}

Probabilmente devo cambiare tutto, però non so.
Lo so che è una domanda banale ma sono un veramente un principiante. ;)
Accetto volentieri ogni consiglio e aiuto.

Grazie mille a tutti.
Buona programmazione
 
Ciao, non so se hai già trovato qualche soluzione, ad ogni modo non mi pare una domanda di facile soluzione, per quanto tu possa pensare sia banale.

Se hai trovato da te, ti invito comunque a postare l'eventuale soluzione. In caso contrario, per poter valutare delle soluzioni mirate, sarebbe utile capire meglio il contesto in cui devi utilizzare questo script e il suo reale scopo.

Intanto, esaminando il codice da te riportato, vedo che non è possibile scomporre quel valore 30 come somma di 20 numeri tutti diversi, secondo quanto stai chiedendo.
A prescindere dallo sviluppo dello script, ci sono infatti dei principi matematici da considerare per poter determinare se sia possibile ottenere dei risultati plausibili secondo i termini iniziali; hai fatto queste considerazioni?
 

Discussioni simili