Nie ogarniam koła ruletki. Dajmy na to mam tablicę struktur, (index, prawdopodobienstwo).
Nr osobnika
w populacji | Prawdopodobieństwa |
---|---|
3 | 0.05 |
1 | 0.15 |
4 | 0.3 |
5 | 0.5 |
2 | 1 |
i teraz mam zrobić coś takiego: |
wylosować liczbę double z przedzuału [0,1] i pobrać indeks osobnika w populacji, który jako ostatni (w tablicy) ma prawdopodobieństwo mniejsze niż wylosowan. Wynik powinien być taki:
3 1 4 5 2
0 0.05 0.15 0.3 0.5 1
gdzie najlepiej przystosowany jest osobnik z indeksem 2, najmniej z 3.
Zrobiłem coś takiego:
<code class="cpp">srand((unsigned)time(NULL));
double r = ((double) rand() / (double)(RAND_MAX));
vector<int> indeksy;
for(int i=0; i<size; i++)
{
if(pi[i].prawdopodobienstwo < r)
indeksy.push_back(i);
}
ale wynik jest inny, niż ten przedstawiony -.-
<span style="color: gray"><i>`wstawienie danych do tabeli oraz dodanie znacznika <code> - fp`</i></span>