Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <stdlib.h>
- #include <math.h>
- #include <time.h>
- #include <stdio.h>
- #define MAX_TRIALS 1024
- typedef struct {
- double aa_level;
- double aa_dmg_tech;
- double aa_radar_tech;
- int planes;
- int air_defence;
- int planes_killed;
- double total_c;
- } stats_t;
- int simulate_aa(stats_t *stats, double rfactor);
- int main(const int argc, const char **argv) {
- if (argc < 6)
- exit(-1);
- srand(time(NULL));
- register stats_t *stats = malloc(sizeof(stats_t));
- stats->aa_level = atof(argv[1]) / 5;
- stats->aa_dmg_tech = 1 + 0.1 * atoi(argv[2]);
- stats->aa_radar_tech = 1 + 0.2 * atoi(argv[3]);
- stats->total_c = 0.1 * stats->aa_radar_tech * stats->aa_level;
- int total_sim_kc = 0;
- for (int i = 0; i < MAX_TRIALS; ++i) {
- stats->planes = atoi(argv[4]);
- stats->air_defence = atoi(argv[5]);
- stats->planes_killed = 0;
- int plane_attacks = 0;
- int aa_attacks = 0;
- while (plane_attacks < 90 && stats->planes > 0) { // modifiable trial condition.
- printf("Day %d, %d:00 | Total kills: %d.\n", plane_attacks / 3, plane_attacks % 3 * 8, stats->planes_killed);
- ++plane_attacks;
- double rfactor = (double) (rand() % 1001) / 1000;
- if (rfactor < stats->total_c) {
- ++aa_attacks;
- // simulate_aa(stats, rfactor);
- printf("Day %d, %d:00 | Shot down %d planes.\n", plane_attacks / 3, plane_attacks % 3 * 8, simulate_aa(stats, rfactor));
- }
- }
- total_sim_kc += stats->planes_killed;
- }
- printf("Finished. Mean kills: %d\n\n", total_sim_kc / MAX_TRIALS);
- free(stats);
- return 0;
- }
- int simulate_aa(stats_t *stats, double rfactor) {
- double aa_kills = (0.8 * rfactor * stats->aa_level * stats->planes * stats->aa_dmg_tech)/(stats->air_defence * stats->total_c);
- int kills = aa_kills >= 1 ? round(aa_kills) : 1;
- stats->planes_killed += kills;
- stats->planes -= kills;
- return kills;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement