Gerar 3 números aleatórios cuja soma seja um determinado valor

O problema é o seguinte. Uma construtora recebe material (areia, brita) em toneladas, o caminhão já vem com o peso na nota fiscal. No antigo sistema um funcionário deveria aferir o material com 3 furos, achar a média para fazer o calculo de M³.

Acontece que os relatórios tem que ser preenchidos em M³, esta primeira parte é fácil, temos uma tabela de densidade por M³ de cada material, daí é só dividir. A parte chata é que tem que achar a média da altura porque tem que constar os dados utilizados para chegar ao resultado do calculo, sendo que temos a medida na largura e do comprimento.

No caso eu tenho o resultado , a largura e o comprimento, preciso desenvolver algo para calcular a altura (media de 3 furos divididos por 3). Bem isso já esta pronto

Média * 350 *230 = M³

[code] double calculaMedia(){
media = 1;
while ((media * 2.3 * 3.5)/100 <= m3){
media++;
}

	return media;
}[/code]

Tentei usar != ao invés de <= mas não funfou. Esta função me da uma média, não fica 100% como eu queria, pois os M³ é um doublé, foi zica tentar incremento, acabei deixando assim.

O que ainda preciso desenvolver:
A média da altura é calculada somando o valor das 3 aferições divididas por 3. Eu preciso gerar 3 números aleatórios cuja a soma seja o valor da média. Alem disso as 3 medidas tem que ter um valor aproximado, por exemplo se a média é 95 as medidas devem ser em torno de 90 a 100, pois nunca existe uma diferença muito grande entre as aferições.

Meu código até agora:

[code]import javax.swing.JOptionPane;

public class Brita1 {

 double tonelada;
 double m3;
 double media;
 double f1;
 double f2;
 double f3;
 

public static void main(String[] args) {
	Brita1 b= new Brita1();
	b.recebeValor();
	b.converterTonelada();
	b.calculaMedia();
	b.calculaF();
	
	JOptionPane.showMessageDialog(null, "Tonelada: " + b.tonelada + "\nM³: " +b.m3 + "\nMédia: " + b.media 
			+"\nFuros:" + b.f1 +  " " + b.f2 +  " " + b.f3);
			
	System.exit(0);
}

double recebeValor(){
	tonelada = Double.parseDouble(JOptionPane.showInputDialog("Digite o peso:"));
	return tonelada;	
}

double converterTonelada(){
	m3 = (tonelada*1000)/1621;
	return m3;	
}

double calculaMedia(){
	media = 1;
	while ((media * 2.3 * 3.5)/100 <= m3){
		media++;
	}

	return media;
}

public void calculaF(){
	
	//aqui deu merda

}

}[/code]