diff options
author | David Vazgenovich Shakaryan <dvshakaryan@gmail.com> | 2022-04-20 06:00:00 -0700 |
---|---|---|
committer | David Vazgenovich Shakaryan <dvshakaryan@gmail.com> | 2022-04-20 06:00:00 -0700 |
commit | 36b74c04154cdecba1f999f5b358874502755cd0 (patch) | |
tree | 21bac2ca5dc251e18ec3b2e9a878bb110ecb8b6e | |
parent | 6d399b63a4d0f29169c06e119fc56fce465c4a55 (diff) | |
download | dartboat-36b74c04154cdecba1f999f5b358874502755cd0.tar.gz dartboat-36b74c04154cdecba1f999f5b358874502755cd0.tar.xz |
add function to test three-dart averages
-rw-r--r-- | comp.c | 7 | ||||
-rw-r--r-- | comp.h | 2 | ||||
-rw-r--r-- | dartbot.c | 26 |
3 files changed, 29 insertions, 6 deletions
@@ -7,8 +7,7 @@ #include <stdbool.h> #include <stdlib.h> -#define HORIZONTAL_STDEV 24 -#define VERTICAL_STDEV 24 +int horizontal_stdev = 24, vertical_stdev = 24; double drand() { @@ -38,8 +37,8 @@ double gauss(double mean, double stdev) struct ccoords get_offset() { - return (struct ccoords){ .x = gauss(0, HORIZONTAL_STDEV), - .y = gauss(0, VERTICAL_STDEV) }; + return (struct ccoords){ .x = gauss(0, horizontal_stdev), + .y = gauss(0, vertical_stdev) }; } struct ccoords pol_to_cart(struct pcoords c) @@ -3,6 +3,8 @@ #include "match.h" +extern int horizontal_stdev, vertical_stdev; + void comp_visit(struct leg *l); #endif @@ -13,11 +13,11 @@ void test_match(int start_points) { struct leg *l = leg_init(start_points, NULL); - while(l->rem > 0) + while (l->rem > 0) comp_visit(l); printf("(%2d) %3d\n", 0, l->start); - for(int i = 0; i < l->n_visits; ++i) { + for (int i = 0; i < l->n_visits; ++i) { struct visit *v = l->visits + i; printf("(%2d) %3d %3d", i+1, v->points, v->rem); @@ -129,6 +129,27 @@ void pvp_curses_match(int start_points) curses_match(start_points, "David", user_visit, "Davidn't", user_visit); } +void test_averages() +{ + int rounds = 100000; + + for (int stdev = 4; stdev < 25; ++stdev) { + horizontal_stdev = vertical_stdev = stdev; + + int darts = 0; + for (int i = 0; i < rounds; ++i) { + struct leg *l = leg_init(501, NULL); + while (l->rem > 0) + comp_visit(l); + leg_free(l); + + darts += (l->n_visits-1)*3 + l->visits[l->n_visits-1].n_darts; + } + + printf("%d %f\n", stdev, (double)(501*rounds)/darts*3); + } +} + int main() { srand(time(NULL)); @@ -138,6 +159,7 @@ int main() pvc_curses_match(501); //pvp_curses_match(501); test_match(501); + //test_averages(); return 0; } |