Untuk AI, saya menggunakan nilai acak untuk memutuskan tindakan mana yang harus dilakukan selanjutnya (hanya jika tidak ada aturan yang harus dilakukan). Beberapa tindakan harus dipilih lebih sering dibandingkan tindakan lainnya.
Idenya adalah untuk mendefinisikan sekelompok probabilitas dan memilih suatu tindakan dari kemungkinan 2 dua kali lebih sering daripada tindakan dengan 1, tindakan 4 dengan probabilitas lima kali lebih tinggi.
action prob
0 1
1 2 (twice as often than 1)
2 2
3 2
4 5 (5 times morer often than 1)
Apakah ada algoritma terkenal untuk perilaku ini atau pendekatan yang lebih matematis?
Implementasi pengujian saya agak canggung. Saya lebih suka menghindari lingkaran dalam.
public static void main(String[] args) {
int[] counts = new int[5];
int[] props = { 1 ,2 ,2 ,2 ,5 };
int sum = 0;
for (int i = 0; i < props.length ; i++) {
sum += props[i];
}
for ( int i = 0 ; i < 100 ; i++ ) {
int rand = (int) (Math.random() * sum);
for ( int j = 0 ; j < props.length ; j++ ) {
if ( rand - props[j] <= 0 ) {
counts[j] = counts[j] + 1;
}
}
}
for ( int j = 0 ; j < props.length ; j++ ) {
System.out.println( "count " + j + "=" + counts[j] );
}
}
Bergantung pada pengujian yang dijalankan, ini menghasilkan hasil seperti:
count 0=14
count 1=25
count 2=25
count 3=25
count 4=50