PDA

View Full Version : [Java] Generatore numeri casuale con media


capor51
18-03-2011, 00:25
Salve a tutti,

premetto che non sono un esperto di programmazione, anzi, diciamo che non ne so nulla, ma avrei bisogno di una mano per programmare un generatore di serie di numeri con doppio decimale casuale che restituisca serie rispettanti queste variabili (che sarebbero inserite da me a ogni nuovo avvio del programma):

1) numero dei valori componenti la serie
2) i due intervalli -> valore min e valore max
3) la media dei valori

Se qualcuno mi potesse dare una mano ne sarei molto grato...:D

Gin&&Tonic
18-03-2011, 08:31
Non ho ben capito cosa chiedi: vuoi una serie di numeri decimali a doppia cifra compresi tra un ValMax e un ValMin , o vuoi la media dei numeri che inserisci che inserisci?

Comunque nel primo caso ti basta usare la "funzione random" (Java.util.Random) , nel secondo caso basta calcolare la media ogni volta che inserisci un num.

capor51
18-03-2011, 08:34
Ehehe mi servono entrambi. Cioè deve creare una serie di valori che rispetti la media da me indicata! Cioè deve fare un controllo ad ogni serie creata fino a quando non ne crea una che abbia la media indicata da me...:mc:

WarDuck
18-03-2011, 10:52
Ehehe mi servono entrambi. Cioè deve creare una serie di valori che rispetti la media da me indicata! Cioè deve fare un controllo ad ogni serie creata fino a quando non ne crea una che abbia la media indicata da me...:mc:

Devi usare le formule inverse sulla base della serie che vuoi generare.

Esponenziale, iper-esponenziale, k-erlangiano, uniforme...

DoctorT
18-03-2011, 11:17
Ehehe mi servono entrambi. Cioè deve creare una serie di valori che rispetti la media da me indicata! Cioè deve fare un controllo ad ogni serie creata fino a quando non ne crea una che abbia la media indicata da me...:mc:

hmm mi sa che dal punto di vista matematico il ragionamento non fila ... se deve rispettare una media la serie non sarà completamente random anche se + si allunga e più è probabile che si avvicini alla media stessa

Gin&&Tonic
18-03-2011, 15:05
Ehehe mi servono entrambi. Cioè deve creare una serie di valori che rispetti la media da me indicata! Cioè deve fare un controllo ad ogni serie creata fino a quando non ne crea una che abbia la media indicata da me...:mc:

Guarda io non ho ben capito cosa ti serve ,i numeri li devi inserire tu o devono essere generati casualmente? se scrivi la traccia per intero riusciamo ad aiutarti meglio.

capor51
21-03-2011, 15:57
Deve essere fatto in modo tale che io inserisca media, valMin, valMax e n° valori desiderato. Quindi partendo da questi dati, il programma deve generare una serie di valori che li rispetti.

Il problema è che io ho eclipse, ma non so scrivere in java. Un tempo avevo una traccia che funzionava, ma l'ho perso e lo devo riscrivere, cioè mi serve che un'anima pia me lo riscriva! Sarebbe incredibile se qualcuno potesse scrivermelo.....:help: :help: :help:

banryu79
21-03-2011, 16:21
Deve essere fatto in modo tale che io inserisca media, valMin, valMax e n° valori desiderato. Quindi partendo da questi dati, il programma deve generare una serie di valori che li rispetti.

Il problema è che io ho eclipse, ma non so scrivere in java. Un tempo avevo una traccia che funzionava, ma l'ho perso e lo devo riscrivere, cioè mi serve che un'anima pia me lo riscriva! Sarebbe incredibile se qualcuno potesse scrivermelo.....:help: :help: :help:
WarDuck ti ha già dato un'indicazione precisa di quello che ti servirebbe.

Comunque il problema non è scrivere il codice che implementa l'algoritmo per il tuo generatore, è proprio definire l'algoritmo (cosa che puoi tranquillamente fare in pseudo-codice, dopo aver capito come calcolare ciò che ti serve).
Il suggerimento di WarDuck implica la scelta del tipo di serie che il tuo generatore dovrà generare; puoi concentrarti su un solo tipo di serie (se non hai particolari requisiti, ma questo lo sai solo tu) oppure puoi rendere il tuo generatore parametrico rispetto al tipo di serie da creare.

In ogni caso devi risolvere la parte matematica della faccenda prima di pensare al codice ;)

Gin&&Tonic
21-03-2011, 17:47
Deve essere fatto in modo tale che io inserisca media, valMin, valMax e n° valori desiderato. Quindi partendo da questi dati, il programma deve generare una serie di valori che li rispetti.

Il problema è che io ho eclipse, ma non so scrivere in java. Un tempo avevo una traccia che funzionava, ma l'ho perso e lo devo riscrivere, cioè mi serve che un'anima pia me lo riscriva! Sarebbe incredibile se qualcuno potesse scrivermelo.....:help: :help: :help:



come ti ha detto Banryu il tuo problema non è il codice , ma definire l'algoritmo.

in ogni caso io non ho capito bene ancora ti serve , devi avere qualcosa del genere:

Valore min :0 , Valore Max 100, media =6;

Serie(composta da 3 numeri) :3 , 6 , 9;

è questo quello che ti serve?

capor51
21-03-2011, 23:46
Esattamente!! Spero di aver capito cosa intendete per algoritmo, quindi sarebbe questo:

1) Inserisci valore minimo
2) Inserisci valore massimo
3) Inserisci media desiderata (y)
4) Inserisci numero valori desiderato (n)

La serie è: x1, x2, x3....xn. La media è y.

Gin&&Tonic
22-03-2011, 08:04
Esattamente!! Spero di aver capito cosa intendete per algoritmo, quindi sarebbe questo:

1) Inserisci valore minimo
2) Inserisci valore massimo
3) Inserisci media desiderata (y)
4) Inserisci numero valori desiderato (n)

La serie è: x1, x2, x3....xn. La media è y.



-.-'' Quello scritto da te non è un algoritmo ma la "traccia " di un esercizio.

Per algoritmo si intende un metodo per ottenere un certo risultato (risolvere un certo tipo di problema) attraverso un numero finito di passi.
In altre parole , devi scrivere ciò che bisogna fare "passo passo" per risolvere il tuo problema (puoi scriverlo anche in italiano, l'importane è capire ciò che bisogna fare).
Un esempio di "algoritmo " per il tuo problema è questo:



n= un numero intero che definisce la lunghezza della tua serie
v=metodoserie(n,min, max);
med= un numero intero (valore media da te desiderato);
MediaOttenuta=1;
SommaSerie=0;
while(! (media/mediaOttenuta==1)){
v=metodoserie(n,min, max);
for("scandici la tua serie, con un indice i")
SommaSerie+=v[i];
MediaOttenuta=SommaSerie/n; }//fine_ciclo_while


il metodo : metodoserie(n,min, max), non fa altro che generare una serie di numeri ,di lunghezza n, e i valori sono compresi tra Min e Max.