Stochastic simulation of rabbit population dynamics in C, comparing an idealized Fibonacci growth model with a realistic model incorporating biological parameters (mortality, reproduction, predation, disease).
University project — L2 Computer Science, Université Clermont-Auvergne (2025)
This project implements two models:
- Fibonacci Model simple exponential growth with no mortality
- Stochastic Model realistic simulation with:
- Age-dependent survival rates (35% juvenile, 60% adult, declining after 10 years)
- Predator and disease mortality (5% base + 1% per million individuals)
- Gaussian-distributed litter sizes (3-9 kits) and litters per year (3-9)
- Sexual maturity between 5-8 months (normal distribution)
- Individual tracking via doubly-linked list for O(1) insertion/deletion
- Mersenne Twister (MT19937-64) random number generator
Key results (20 simulations, 140 months each):
| Metric | Value |
|---|---|
| Mean population | 3,477,703 |
| Standard deviation | 2,319,671 |
| 95% confidence interval | [2,392,076 4,563,330] |
| Range | 0 6,784,794 |
.
fibonacci-model/ Fibonacci model (simple)
question1.c
mt19937-64.c
mt64.h
stochastic-model/ Stochastic model (realistic)
main.c Entry point
rabbit.c/.h Rabbit data structures and management
simu.c/.h Simulation logic and statistics
mt19937-64.c Mersenne Twister RNG
mt64.h
simuResult/ CSV output files
Rapport TP04/ Report (PDF) with graphs and analysis
Makefile
Requirements: GCC, Make
# Build both models
make all
# Or build individually
make fibonacci
make stochastic
# Run Fibonacci model
./fibonacci-model/fibonacci
# Run stochastic simulation (outputs CSV files to stochastic-model/simuResult/)
./stochastic-model/simulation
# Clean
make clean- Zero memory leaks validated with Valgrind (46.7M allocations, all freed)
- Performance profiled with gprof to identify bottlenecks
- Monte Carlo approach 20 independent runs for statistical validity
- CSV output for data analysis and visualization
- Titouan Mota