我有一個XXY矩陣的值從矩陣的位置(因此它的2D)填充有基於所述此公式與數值F現在爲200:隨機選擇基於在該位置
randomGenerator( (F×10)+(F/2))+ 1
RandomGenerator距離java.util.Random中類
我想隨機挑選從像矩陣的位置的隨機數生成器[ 2; 6]並向用戶顯示輸出,但我希望隨機性取決於val你的位置。如果價值越高,它被挑選出來的機會也越高。現在它只顯示一個隨機位置。
我該如何做到這一點?
我有一個XXY矩陣的值從矩陣的位置(因此它的2D)填充有基於所述此公式與數值F現在爲200:隨機選擇基於在該位置
randomGenerator( (F×10)+(F/2))+ 1
RandomGenerator距離java.util.Random中類
我想隨機挑選從像矩陣的位置的隨機數生成器[ 2; 6]並向用戶顯示輸出,但我希望隨機性取決於val你的位置。如果價值越高,它被挑選出來的機會也越高。現在它只顯示一個隨機位置。
我該如何做到這一點?
標準的辦法處理這一問題是:從原來的一個
0
到1
歸一化矩陣是calcualted:
簡化的示例:
原始排列:
2 6 8
標準化矩陣:
0.125 0.375 0.5
所以,通過生成隨機值[0-1]
你會挑
position `0` 12.5% of time
position `1` 37.5% of time
position `2` 50% of time
這裏是相同的應用程序,這說明它是如何工作的這個例子:
public static void main(final String[] args) {
final double[] original = new double[] { 2.0, 6.0, 8.0 };
final double[] normalized = getNormalized(original);
final int[] positionPicked = new int[original.length];
final Random rnd = new Random();
for (int i = 0; i < 10000; i++) {
final double d = rnd.nextDouble();
final int position = getPosition(normalized, d);
positionPicked[position]++;
}
for (final int p : positionPicked)
System.out.println(p);
}
static double[] getNormalized(final double[] original) {
double s = 0.0;
for (final double e : original)
s += e;
final double[] normalized = new double[original.length];
for (int i = 0; i < original.length; i++)
normalized[i] = original[i]/s;
return normalized;
}
static int getPosition(final double[] normalized, final double v) {
double s = 0;
for (int i = 0; i < normalized.length; i++) {
s += normalized[i];
if (s >= v)
return i;
}
return normalized.length - 1;
}
且結果如下:
#0 1283 12.83%
#1 3732 37.32%
#2 4985 49.85%
這可能對您有所幫助: http://introcs.cs.princeton.edu/java/95linear/Matrix.java.html
這說明矩陣是如何創建的,並且可以幫助您確定隨機選取一個正方形的方法。
(假設你使用的是矩陣類)
我不使用矩陣類我用'field = new int [x] [y]' – BRHSM
讓我們假設你有一個號碼列表。你可以計算列表和2d矩陣之間的轉換。
我們假設挑選一個元素的概率是成比例的。 你有這樣的矩陣
482
759
123
你會找到一個方法來迭代列了清單,例如
4,8,2,7,5,9,1,2,3
當迭代建設累計總和
4,12,14,21,26,35,36,38,41
然後挑一些範圍總和*蘭特(),所以在這裏0-41
第一項目在累計和格里比您選擇的單元格更接近於rand數字。
如果你想成反比,那麼你的累計和就是1/x的值。你可以使用任何有價值的函數。
我不想要這個值。我想要它的位置。這個值只是它被選中的機會 – BRHSM
矩陣中的數字範圍是多少? 0到100? – user3437460
隨着現在的測試,它的範圍從1到2100與f是200位,可能會上升 – BRHSM