| 587 | } |
| 588 | |
| 589 | int sample_array(float *a, int n) |
| 590 | { |
| 591 | float sum = sum_array(a, n); |
| 592 | scale_array(a, n, 1./sum); |
| 593 | float r = rand_uniform(0, 1); |
| 594 | int i; |
| 595 | for(i = 0; i < n; ++i){ |
| 596 | r = r - a[i]; |
| 597 | if (r <= 0) return i; |
| 598 | } |
| 599 | return n-1; |
| 600 | } |
| 601 | |
| 602 | int max_int_index(int *a, int n) |
| 603 | { |