unsigned int i; int prob; prob = 0; for (i = 0;i < MAX_SCHEME_WEAPONS;i++) { prob += wainfo.scheme->weapons[i].crate; } if (prob > 0) { prob = seed % prob; for (i = 0;i < MAX_SCHEME_WEAPONS;i++) { prob -= wainfo.scheme->weapons[i].crate; if (prob < 0) { *result = i; return 1; } } } return 0;