現在,實際隨機變量是,據我所知,功能映射值以它們的概率。我不認爲你應該返回一個函數,所以我劃傷這樣的:最接近我猜你應該做的:
import java.util.*;
import java.lang.*;
class RandomVar
{
TreeMap<Double, Integer> variables;
public RandomVar()
{
variables = new TreeMap<Double, Integer>();
int count = Main.RandGen.nextInt(15);
double probabilityLeft = 1.0;
for (int i = 0 ; i < count - 1; i++)
{
int toPut = Main.RandGen.nextInt(100);
while (variables.containsValue(toPut)) toPut = Main.RandGen.nextInt(100);
double prob = probabilityLeft * Main.RandGen.nextDouble();
variables.put(prob, toPut);
}
int toPut = Main.RandGen.nextInt(100);
while (variables.containsValue(toPut)) toPut = Main.RandGen.nextInt(100);
double prob = probabilityLeft;
variables.put(prob, toPut);
}
public int getValue()
{
double rand = Main.RandGen.nextDouble();
double sum = 0;
for (double prob : variables.keySet()) //keySet() is sorted ascending
{
if (prob >= rand)
return variables.get(prob);
}
return variables.get(variables.lastKey());
}
//Shows probabilities of values
public void test()
{
for (double key : variables.keySet())
System.out.println(key + " :: " + variables.get(key));
}
}
class Main
{
public static Random RandGen = new Random();
public static void main (String[] args)
{
RandomVar rv = new RandomVar();
rv.test();
System.out.println("------------------------------");
for (int i = 0; i < 40 ; i++)
System.out.print(rv.getValue() + ", ");
}
}
這是非常糟糕的解決方案,基本上是這個類允許你用一組(隨機)概率返回值。我仍然不知道這是不是你的教授想要的......
你的教授需要更好地解釋他[她]的自我。也許意圖是將數字存儲在某個地方,如數組。 – paxdiablo
你能給我你的作業詳情嗎?像你的老師究竟要求你做什麼? – amod
這個問題有問題嗎? (順便說一句,爲什麼你減去一個常數零?你可能會在你的腦海中做'0.5 - 0'。) – yshavit