• Home
  • Features
  • Pricing
  • Docs
  • Announcements
  • Sign In

eric15342335 / comp2113-engg1340-group-project / #32

17 Jun 2024 01:33PM UTC coverage: 73.604% (+0.1%) from 73.503%
#32

push

travis-ci

eric15342335
Fix undef symbol __imp_ShowWindow on MSVC

1450 of 1970 relevant lines covered (73.6%)

709.19 hits per line

Source File
Press 'n' to go to next uncovered line, 'b' for previous

80.9
/src/events.cpp
1
/// @file events.cpp
2
/// Stores the event texts and modifiers.
3
/*
4
This program is free software: you can redistribute it and/or modify it under the
5
terms of the GNU Lesser General Public License as published by the Free Software
6
Foundation, either version 3 of the License, or (at your option) any later version.
7

8
This program is distributed in the hope that it will be useful, but WITHOUT ANY
9
WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A
10
PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details.
11

12
You should have received a copy of the GNU Lesser General Public License along with this
13
program. If not, see <https://www.gnu.org/licenses/>.
14
*/
15

16
#include "events.h"
17

18
#include "random_price.h"
19

20
#include <algorithm>
21
#include <cassert>
22
#include <iostream>
23

24
/** @brief The list of all events that can be applied to the stocks.
25
 * @ref category_list
26
 * @details
27
 * | Event ID Range | Affected Category |
28
 * | -------------- | ----------------- |
29
 * | 0 to 7         | All Stocks        |
30
 * | 8 to 11        | Adv&Market        |
31
 * | 12 to 16       | Aero&Def          |
32
 * | 17 to 22       | Airlines          |
33
 * | 23 to 27       | RenewEnergy       |
34
 * | 28 to 31       | Auto              |
35
 * | 32 to 34       | Banks             |
36
 * | 35 to 37       | Biotech           |
37
 * | 38 to 40       | Broadcast         |
38
 * | 41 to 46       | Casinos&Gaming    |
39
 * | 47 to 51       | E-Commerce        |
40
 * | 52 to 55       | FinServices       |
41
 * | 56 to 61       | Food&Beverage     |
42
 * | 62 to 66       | Healthcare        |
43
 * | 67 to 74       | Tech              |
44
 * | 75 to 79       | RealEstate        |
45
 * | 80 to 85       | Retail            |
46
 * | 86 to 91       | Telecom           |
47
 * | 92 to 98       | pick_random_stock |
48
 */
49
const std::vector<Stock_event> all_stock_events = {
50
    // event_id 0 to 7 affect all stocks
51
    {
52
        /** event_id */ 0,
53
        /** mutually_exclusive_events */ {1},
54
        /** text */ "The FED has decreased the interest rate!",
55
        /** duration */ 5,
56
        /** percentage_permille */ 4,
57
        /** type_of_event */ all_stocks,
58
        /** category */ 0,
59
        /** modifiers*/
60
        {{standard_deviation, 0.1}, {mean, 20}, {lower_limit, 0}, {upper_limit, 20}},
61
    },
62
    {
63
        /** event_id */ 1,
64
        /** mutually_exclusive_events */ {0, 3},
65
        /** text */ "The FED has increased the interest rate!",
66
        /** duration */ 5,
67
        /** percentage_permille */ 4,
68
        /** type_of_event */ all_stocks,
69
        /** category */ 0,
70
        /** modifiers*/
71
        {{standard_deviation, 0.1}, {mean, -20}, {lower_limit, -20}, {upper_limit, 0}},
72
    },
73
    {
74
        /** event_id */ 2,
75
        /** mutually_exclusive_events */ {},
76
        /** text */ "Economic Recession: Market Downturn Signals Investor Concerns",
77
        /** duration */ 7,
78
        /** percentage_permille */ 2,
79
        /** type_of_event */ all_stocks,
80
        /** category */ 0,
81
        /** modifiers*/
82
        {{standard_deviation, 0.2}, {mean, -30}, {lower_limit, -30}, {upper_limit, 0}},
83
    },
84
    {
85
        /** event_id */ 3,
86
        /** mutually_exclusive_events */ {1},
87
        /** text */
88
        "Central Bank Cuts Interest Rates: Market Stimulus Boosts Investor Sentiment",
89
        /** duration */ 3,
90
        /** percentage_permille */ 4,
91
        /** type_of_event */ all_stocks,
92
        /** category */ 0,
93
        /** modifiers*/
94
        {{standard_deviation, 0.05}, {mean, 10}, {lower_limit, 0}, {upper_limit, 10}},
95
    },
96
    {
97
        /** event_id */ 4,
98
        /** mutually_exclusive_events */ {},
99
        /** text */
100
        "Trade War Escalates: Global Market Volatility Amidst Rising Tensions",
101
        /** duration */ 5,
102
        /** percentage_permille */ 4,
103
        /** type_of_event */ all_stocks,
104
        /** category */ 0,
105
        /** modifiers*/
106
        {{standard_deviation, 0.15}, {mean, -30}, {lower_limit, -30}, {upper_limit, 0}},
107
    },
108
    {
109
        /** event_id */ 5,
110
        /** mutually_exclusive_events */ {},
111
        /** text */
112
        "Natural Disaster Strikes: Stock Market Reacts to Catastrophic Event",
113
        /** duration */ 7,
114
        /** percentage_permille */ 4,
115
        /** type_of_event */ all_stocks,
116
        /** category */ 0,
117
        /** modifiers*/
118
        {{standard_deviation, 0.1}, {mean, -20}, {lower_limit, -20}, {upper_limit, 0}},
119
    },
120
    {
121
        /** event_id */ 6,
122
        /** mutually_exclusive_events */ {},
123
        /** text */ "Government Policy Change: Market Impacted by New Regulations",
124
        /** duration */ 4,
125
        /** percentage_permille */ 4,
126
        /** type_of_event */ all_stocks,
127
        /** category */ 0,
128
        /** modifiers*/
129
        {{standard_deviation, 0.08}, {mean, -10}, {lower_limit, -15}, {upper_limit, 5}},
130
    },
131
    {
132
        /** event_id */ 7,
133
        /** mutually_exclusive_events */ {},
134
        /** text */ "Inflation Surges: Market Concerns Rise as Prices Soar",
135
        /** duration */ 6,
136
        /** percentage_permille */ 12,
137
        /** type_of_event */ all_stocks,
138
        /** category */ 0,
139
        /** modifiers*/
140
        {{standard_deviation, 0.12}, {mean, 0}, {lower_limit, -25}, {upper_limit, 0}},
141
    },
142
    // event_id 8 to 11 affect category "Adv&Market"
143
    {
144
        /** event_id */ 8,
145
        /** mutually_exclusive_events */ {},
146
        /** text */ "New Social Media Platform Disrupts Advertising Landscape",
147
        /** duration */ 4,
148
        /** percentage_permille */ 8,
149
        /** type_of_event */ category,
150
        /** category */ 0,
151
        /** modifiers */
152
        {{standard_deviation, 0.08}, {mean, -3}, {lower_limit, -10}, {upper_limit, 0}},
153
    },
154
    {
155
        /** event_id */ 9,
156
        /** mutually_exclusive_events */ {},
157
        /** text */ "Digital Advertising Spend Reaches All-Time High",
158
        /** duration */ 6,
159
        /** percentage_permille */ 15,
160
        /** type_of_event */ category,
161
        /** category */ 0,
162
        /** modifiers */
163
        {{standard_deviation, 0.10}, {mean, 5}, {lower_limit, 0}, {upper_limit, 30}},
164
    },
165
    {
166
        /** event_id */ 10,
167
        /** mutually_exclusive_events */ {},
168
        /** text */ "Marketing Automation Tools Gain Popularity Among Businesses",
169
        /** duration */ 5,
170
        /** percentage_permille */ 10,
171
        /** type_of_event */ category,
172
        /** category */ 0,
173
        /** modifiers */
174
        {{standard_deviation, 0.12}, {mean, 2}, {lower_limit, 0}, {upper_limit, 15}},
175
    },
176
    {
177
        /** event_id */ 11,
178
        /** mutually_exclusive_events */ {},
179
        /** text */ "Artificial Intelligence Revolutionizes Targeted Advertising",
180
        /** duration */ 5,
181
        /** percentage_permille */ 12,
182
        /** type_of_event */ category,
183
        /** category */ 0,
184
        /** modifiers */
185
        {{standard_deviation, 0.10}, {mean, 4}, {lower_limit, 0}, {upper_limit, 25}},
186
    },
187
    // event_id 12 to 16 affect category "Aero&Def"
188
    {
189
        /** event_id */ 12,
190
        /** mutually_exclusive_events */ {16},
191
        /** text */
192
        "Government Increases Defense Spending Amid Rising Geopolitical Tensions",
193
        /** duration */ 4,
194
        /** percentage_permille */ 5,
195
        /** type_of_event */ category,
196
        /** category */ 1,
197
        /** modifiers */
198
        {{standard_deviation, 0.10}, {mean, 5}, {lower_limit, 0}, {upper_limit, 30}},
199
    },
200
    {
201
        /** event_id */ 13,
202
        /** mutually_exclusive_events */ {15},
203
        /** text */ "Emerging Technologies Transform Aerospace Industry",
204
        /** duration */ 5,
205
        /** percentage_permille */ 10,
206
        /** type_of_event */ category,
207
        /** category */ 1,
208
        /** modifiers */
209
        {{standard_deviation, 0.08}, {mean, 3}, {lower_limit, 0}, {upper_limit, 20}},
210
    },
211
    {
212
        /** event_id */ 14,
213
        /** mutually_exclusive_events */ {},
214
        /** text */ "Space Exploration Companies Achieve Major Milestones",
215
        /** duration */ 5,
216
        /** percentage_permille */ 12,
217
        /** type_of_event */ category,
218
        /** category */ 1,
219
        /** modifiers */
220
        {{standard_deviation, 0.12}, {mean, 2}, {lower_limit, 0}, {upper_limit, 15}},
221
    },
222
    {
223
        /** event_id */ 15,
224
        /** mutually_exclusive_events */ {13},
225
        /** text */ "Supply Chain Disruptions Hinder Aerospace Manufacturing",
226
        /** duration */ 6,
227
        /** percentage_permille */ 12,
228
        /** type_of_event */ category,
229
        /** category */ 1,
230
        /** modifiers */
231
        {{standard_deviation, 0.10}, {mean, -3}, {lower_limit, -10}, {upper_limit, 0}},
232
    },
233
    {
234
        /** event_id */ 16,
235
        /** mutually_exclusive_events */ {12},
236
        /** text */ "Budget Cuts Lead to Decreased Defense Contracts",
237
        /** duration */ 5,
238
        /** percentage_permille */ 10,
239
        /** type_of_event */ category,
240
        /** category */ 1,
241
        /** modifiers */
242
        {{standard_deviation, 0.12}, {mean, -2}, {lower_limit, -15}, {upper_limit, 0}},
243
    },
244
    // event_id 17 to 22 affect category "Airlines"
245
    {
246
        /** event_id */ 17,
247
        /** mutually_exclusive_events */ {},
248
        /** text */ "Airline Industry Experiences Surge in Travel Demand",
249
        /** duration */ 7,
250
        /** percentage_permille */ 15,
251
        /** type_of_event */ category,
252
        /** category */ 2,
253
        /** modifiers */
254
        {{standard_deviation, 0.10}, {mean, 5}, {lower_limit, 0}, {upper_limit, 30}},
255
    },
256
    {
257
        /** event_id */ 18,
258
        /** mutually_exclusive_events */ {},
259
        /** text */
260
        "Fuel Prices Skyrocket, Putting Pressure on Airlines' Profit Margins",
261
        /** duration */ 6,
262
        /** percentage_permille */ 10,
263
        /** type_of_event */ category,
264
        /** category */ 2,
265
        /** modifiers */
266
        {{standard_deviation, 0.08}, {mean, -3}, {lower_limit, -20}, {upper_limit, 0}},
267
    },
268
    {
269
        /** event_id */ 19,
270
        /** mutually_exclusive_events */ {},
271
        /** text */ "Airline Strikes Disrupt Travel Plans for Thousands of Passengers",
272
        /** duration */ 5,
273
        /** percentage_permille */ 12,
274
        /** type_of_event */ category,
275
        /** category */ 2,
276
        /** modifiers */
277
        {{standard_deviation, 0.12}, {mean, -2}, {lower_limit, -15}, {upper_limit, 0}},
278
    },
279
    {
280
        /** event_id */ 20,
281
        /** mutually_exclusive_events */ {},
282
        /** text */ "New Low-Cost Airline Enters the Market, Intensifying Competition",
283
        /** duration */ 6,
284
        /** percentage_permille */ 12,
285
        /** type_of_event */ category,
286
        /** category */ 2,
287
        /** modifiers */
288
        {{standard_deviation, 0.10}, {mean, 3}, {lower_limit, 0}, {upper_limit, 20}},
289
    },
290
    {
291
        /** event_id */ 21,
292
        /** mutually_exclusive_events */ {},
293
        /** text */
294
        "Natural Disasters Disrupt Airline Operations and Cause Flight Cancellations",
295
        /** duration */ 3,
296
        /** percentage_permille */ 10,
297
        /** type_of_event */ category,
298
        /** category */ 2,
299
        /** modifiers */
300
        {{standard_deviation, 0.12}, {mean, -2}, {lower_limit, -15}, {upper_limit, 0}},
301
    },
302
    {
303
        /** event_id */ 22,
304
        /** mutually_exclusive_events */ {},
305
        /** text */ "New Security Regulations Increase Operational Costs for Airlines",
306
        /** duration */ 6,
307
        /** percentage_permille */ 10,
308
        /** type_of_event */ category,
309
        /** category */ 2,
310
        /** modifiers */
311
        {{standard_deviation, 0.08}, {mean, -1}, {lower_limit, -10}, {upper_limit, 0}},
312
    },
313
    // event_id 23 to 27 affect category "RenewEnergy"
314
    {
315
        /** event_id */ 23,
316
        /** mutually_exclusive_events */ {26},
317
        /** text */
318
        "Government Implements New Incentives to Promote Renewable Energy Adoption",
319
        /** duration */ 6,
320
        /** percentage_permille */ 12,
321
        /** type_of_event */ category,
322
        /** category */ 3,
323
        /** modifiers */
324
        {{standard_deviation, 0.10}, {mean, 3}, {lower_limit, 0}, {upper_limit, 20}},
325
    },
326
    {
327
        /** event_id */ 24,
328
        /** mutually_exclusive_events */ {},
329
        /** text */
330
        "Breakthrough in Solar Panel Technology Increases Efficiency by 20%",
331
        /** duration */ 5,
332
        /** percentage_permille */ 10,
333
        /** type_of_event */ category,
334
        /** category */ 3,
335
        /** modifiers */
336
        {{standard_deviation, 0.12}, {mean, 2}, {lower_limit, 0}, {upper_limit, 15}},
337
    },
338
    {
339
        /** event_id */ 25,
340
        /** mutually_exclusive_events */ {},
341
        /** text */ "Investment in Wind Farms Surges as Costs of Wind Energy Decrease",
342
        /** duration */ 7,
343
        /** percentage_permille */ 16,
344
        /** type_of_event */ category,
345
        /** category */ 3,
346
        /** modifiers */
347
        {{standard_deviation, 0.10}, {mean, 5}, {lower_limit, 0}, {upper_limit, 30}},
348
    },
349
    {
350
        /** event_id */ 26,
351
        /** mutually_exclusive_events */ {23},
352
        /** text */
353
        "Government Cuts Subsidies for Renewable Energy Projects, Slowing Down "
354
        "Progress",
355
        /** duration */ 6,
356
        /** percentage_permille */ 10,
357
        /** type_of_event */ category,
358
        /** category */ 3,
359
        /** modifiers */
360
        {{standard_deviation, 0.08}, {mean, -3}, {lower_limit, -20}, {upper_limit, 0}},
361
    },
362
    {
363
        /** event_id */ 27,
364
        /** mutually_exclusive_events */ {},
365
        /** text */ "Persistent Cloud Cover Reduces Solar Power Generation",
366
        /** duration */ 5,
367
        /** percentage_permille */ 8,
368
        /** type_of_event */ category,
369
        /** category */ 3,
370
        /** modifiers */
371
        {{standard_deviation, 0.10}, {mean, -2}, {lower_limit, -15}, {upper_limit, 0}},
372
    },
373
    // event_id 28 to 31 affect category "Auto"
374
    {
375
        /** event_id */ 28,
376
        /** mutually_exclusive_events */ {},
377
        /** text */
378
        "Breakthrough in Electric Vehicle Battery Technology Extends Range and Reduces "
379
        "Charging Time",
380
        /** duration */ 6,
381
        /** percentage_permille */ 12,
382
        /** type_of_event */ category,
383
        /** category */ 4,
384
        /** modifiers */
385
        {{standard_deviation, 0.08}, {mean, 3}, {lower_limit, 0}, {upper_limit, 20}},
386
    },
387
    {
388
        /** event_id */ 29,
389
        /** mutually_exclusive_events */ {},
390
        /** text */
391
        "Sudden Increase in Oil Prices Impacts Affordability and Demand for "
392
        "Conventional Vehicles",
393
        /** duration */ 5,
394
        /** percentage_permille */ 12,
395
        /** type_of_event */ category,
396
        /** category */ 4,
397
        /** modifiers */
398
        {{standard_deviation, 0.08}, {mean, -5}, {lower_limit, -20}, {upper_limit, 0}},
399
    },
400
    {
401
        /** event_id */ 30,
402
        /** mutually_exclusive_events */ {31},
403
        /** text */
404
        "Introduction of Advanced Driver Assistance Systems Enhances Vehicle Safety",
405
        /** duration */ 5,
406
        /** percentage_permille */ 8,
407
        /** type_of_event */ category,
408
        /** category */ 4,
409
        /** modifiers */
410
        {{standard_deviation, 0.06}, {mean, 5}, {lower_limit, 0}, {upper_limit, 15}},
411
    },
412
    {
413
        /** event_id */ 31,
414
        /** mutually_exclusive_events */ {30},
415
        /** text */ "Frequent Accidents raise safety Concerns",
416
        /** duration */ 6,
417
        /** percentage_permille */ 10,
418
        /** type_of_event */ category,
419
        /** category */ 4,
420
        /** modifiers */
421
        {{standard_deviation, 0.10}, {mean, -5}, {lower_limit, -30}, {upper_limit, 0}},
422
    },
423
    // event_id 32 to 34 affect category "Banks"
424
    {
425
        /** event_id */ 32,
426
        /** mutually_exclusive_events */ {},
427
        /** text */
428
        "Economic Recession Triggers Increase in Non-Performing Loans, Putting Banks "
429
        "at Risk",
430
        /** duration */ 7,
431
        /** percentage_permille */ 10,
432
        /** type_of_event */ category,
433
        /** category */ 5,
434
        /** modifiers */
435
        {{standard_deviation, 0.10}, {mean, -4}, {lower_limit, -25}, {upper_limit, 0}},
436
    },
437
    {
438
        /** event_id */ 33,
439
        /** mutually_exclusive_events */ {},
440
        /** text */
441
        "Government Introduces Stimulus Package to Boost Lending and Economic Growth",
442
        /** duration */ 6,
443
        /** percentage_permille */ 15,
444
        /** type_of_event */ category,
445
        /** category */ 5,
446
        /** modifiers */
447
        {{standard_deviation, 0.08}, {mean, 5}, {lower_limit, 0}, {upper_limit, 25}},
448
    },
449
    {
450
        /** event_id */ 34,
451
        /** mutually_exclusive_events */ {},
452
        /** text */
453
        "Government Implements Excessive Money Printing, Leading to Inflation and "
454
        "Currency Devaluation",
455
        /** duration */ 8,
456
        /** percentage_permille */ 16,
457
        /** type_of_event */ category,
458
        /** category */ 5,
459
        /** modifiers */
460
        {{standard_deviation, 0.12}, {mean, 0}, {lower_limit, -40}, {upper_limit, 0}},
461
    },
462
    // event_id 35 to 37 affect category "Biotech"
463
    {
464
        /** event_id */ 35,
465
        /** mutually_exclusive_events */ {},
466
        /** text */
467
        "Breakthrough in Gene Therapy Offers Potential Cure for Genetic Diseases",
468
        /** duration */ 7,
469
        /** percentage_permille */ 14,
470
        /** type_of_event */ category,
471
        /** category */ 6,
472
        /** modifiers */
473
        {{standard_deviation, 0.10}, {mean, 4}, {lower_limit, 0}, {upper_limit, 25}},
474
    },
475
    {
476
        /** event_id */ 36,
477
        /** mutually_exclusive_events */ {},
478
        /** text */
479
        "Clinical Trial Failure Delays Development of Promising Drug Candidate",
480
        /** duration */ 5,
481
        /** percentage_permille */ 10,
482
        /** type_of_event */ category,
483
        /** category */ 6,
484
        /** modifiers */
485
        {{standard_deviation, 0.08}, {mean, -3}, {lower_limit, -20}, {upper_limit, 0}},
486
    },
487
    {
488
        /** event_id */ 37,
489
        /** mutually_exclusive_events */ {},
490
        /** text */
491
        "Successful FDA Approval Expedites Commercialization of Innovative Biotech "
492
        "Products",
493
        /** duration */ 6,
494
        /** percentage_permille */ 12,
495
        /** type_of_event */ category,
496
        /** category */ 6,
497
        /** modifiers */
498
        {{standard_deviation, 0.09}, {mean, 3}, {lower_limit, 0}, {upper_limit, 20}},
499
    },
500
    // event_id 38 to 40 affect category "Broadcast"
501
    {
502
        /** event_id */ 38,
503
        /** mutually_exclusive_events */ {},
504
        /** text */
505
        "New Streaming Service Launches with Extensive Content Library and Innovative "
506
        "Features",
507
        /** duration */ 6,
508
        /** percentage_permille */ 10,
509
        /** type_of_event */ category,
510
        /** category */ 7,
511
        /** modifiers */
512
        {{standard_deviation, 0.08}, {mean, 3}, {lower_limit, 0}, {upper_limit, 20}},
513
    },
514
    {
515
        /** event_id */ 39,
516
        /** mutually_exclusive_events */ {},
517
        /** text */
518
        "Broadcast Network Faces Significant Revenue Losses Due to Declining "
519
        "Viewership",
520
        /** duration */ 7,
521
        /** percentage_permille */ 12,
522
        /** type_of_event */ category,
523
        /** category */ 7,
524
        /** modifiers */
525
        {{standard_deviation, 0.10}, {mean, -4}, {lower_limit, -25}, {upper_limit, 0}},
526
    },
527
    {
528
        /** event_id */ 40,
529
        /** mutually_exclusive_events */ {},
530
        /** text */
531
        "Broadcast Network Strikes Exclusive Deal for Live Coverage of Major Sporting "
532
        "Event",
533
        /** duration */ 5,
534
        /** percentage_permille */ 8,
535
        /** type_of_event */ category,
536
        /** category */ 7,
537
        /** modifiers */
538
        {{standard_deviation, 0.07}, {mean, 2}, {lower_limit, 0}, {upper_limit, 15}},
539
    },
540
    // event_id 41 to 46 affect category "Casinos&Gaming"
541
    {
542
        /** event_id */ 41,
543
        /** mutually_exclusive_events */ {},
544
        /** text */ "Stringent Gambling Regulations Restrict Casino Operations",
545
        /** duration */ 6,
546
        /** percentage_permille */ 12,
547
        /** type_of_event */ category,
548
        /** category */ 8,
549
        /** modifiers */
550
        {{standard_deviation, 0.10}, {mean, -4}, {lower_limit, -25}, {upper_limit, 0}},
551
    },
552
    {
553
        /** event_id */ 42,
554
        /** mutually_exclusive_events */ {},
555
        /** text */
556
        "Innovative Strategies Help Casinos Navigate Stringent Regulations and "
557
        "Minimize Revenue Losses",
558
        /** duration */ 7,
559
        /** percentage_permille */ 10,
560
        /** type_of_event */ category,
561
        /** category */ 8,
562
        /** modifiers */
563
        {{standard_deviation, 0.08}, {mean, 3}, {lower_limit, 0}, {upper_limit, 20}},
564
    },
565
    {
566
        /** event_id */ 43,
567
        /** mutually_exclusive_events */ {45},
568
        /** text */
569
        "Online Gaming Goes Viral, Attracting Millions of Players Worldwide",
570
        /** duration */ 5,
571
        /** percentage_permille */ 20,
572
        /** type_of_event */ category,
573
        /** category */ 8,
574
        /** modifiers */
575
        {{standard_deviation, 0.1}, {mean, 5}, {lower_limit, 0}, {upper_limit, 30}},
576
    },
577
    {
578
        /** event_id */ 44,
579
        /** mutually_exclusive_events */ {},
580
        /** text */ "New Esports Tournament Breaks Viewership Records",
581
        /** duration */ 4,
582
        /** percentage_permille */ 15,
583
        /** type_of_event */ category,
584
        /** category */ 8,
585
        /** modifiers */
586
        {{standard_deviation, 0.1}, {mean, 7}, {lower_limit, 0}, {upper_limit, 25}},
587
    },
588
    {
589
        /** event_id */ 45,
590
        /** mutually_exclusive_events */ {43},
591
        /** text */
592
        "Major Data Breach Affects Gaming Platforms, Raising Concerns About Player "
593
        "Privacy",
594
        /** duration */ 6,
595
        /** percentage_permille */ 10,
596
        /** type_of_event */ category,
597
        /** category */ 8,
598
        /** modifiers */
599
        {{standard_deviation, 0.12}, {mean, -4}, {lower_limit, -20}, {upper_limit, 0}},
600
    },
601
    {
602
        /** event_id */ 46,
603
        /** mutually_exclusive_events */ {},
604
        /** text */
605
        "Introduction of Virtual Reality Gaming Enhances Player Immersion and "
606
        "Experience",
607
        /** duration */ 5,
608
        /** percentage_permille */ 12,
609
        /** type_of_event */ category,
610
        /** category */ 8,
611
        /** modifiers */
612
        {{standard_deviation, 0.1}, {mean, 6}, {lower_limit, 0}, {upper_limit, 20}},
613
    },
614
    // event_id 47 to 51 affect category "E-Commerce"
615
    {
616
        /** event_id */ 47,
617
        /** mutually_exclusive_events */ {},
618
        /** text */
619
        "E-commerce Sales Reach All-Time High, Exceeding Market Expectations",
620
        /** duration */ 6,
621
        /** percentage_permille */ 12,
622
        /** type_of_event */ category,
623
        /** category */ 9,
624
        /** modifiers */
625
        {{standard_deviation, 0.1}, {mean, 6}, {lower_limit, 0}, {upper_limit, 20}},
626
    },
627
    {
628
        /** event_id */ 48,
629
        /** mutually_exclusive_events */ {},
630
        /** text */
631
        "Supply Chain Disruptions Cause Delivery Delays and Inventory Shortages in "
632
        "E-commerce",
633
        /** duration */ 7,
634
        /** percentage_permille */ 10,
635
        /** type_of_event */ category,
636
        /** category */ 9,
637
        /** modifiers */
638
        {{standard_deviation, 0.12}, {mean, -4}, {lower_limit, -20}, {upper_limit, 0}},
639
    },
640
    {
641
        /** event_id */ 49,
642
        /** mutually_exclusive_events */ {},
643
        /** text */
644
        "Introduction of Innovative Payment Solutions Boosts E-commerce Conversion "
645
        "Rates",
646
        /** duration */ 5,
647
        /** percentage_permille */ 8,
648
        /** type_of_event */ category,
649
        /** category */ 9,
650
        /** modifiers */
651
        {{standard_deviation, 0.1}, {mean, 4}, {lower_limit, 0}, {upper_limit, 15}},
652
    },
653
    {
654
        /** event_id */ 50,
655
        /** mutually_exclusive_events */ {},
656
        /** text */
657
        "Cybersecurity Breach Raises Concerns About Online Shopping Privacy and Data "
658
        "Protection",
659
        /** duration */ 6,
660
        /** percentage_permille */ 15,
661
        /** type_of_event */ category,
662
        /** category */ 9,
663
        /** modifiers */
664
        {{standard_deviation, 0.1}, {mean, -7}, {lower_limit, -25}, {upper_limit, 0}},
665
    },
666
    {
667
        /** event_id */ 51,
668
        /** mutually_exclusive_events */ {},
669
        /** text */
670
        "Advancements in Artificial Intelligence Revolutionize Personalized Shopping "
671
        "Experiences",
672
        /** duration */ 5,
673
        /** percentage_permille */ 10,
674
        /** type_of_event */ category,
675
        /** category */ 9,
676
        /** modifiers */
677
        {{standard_deviation, 0.1}, {mean, 5}, {lower_limit, 0}, {upper_limit, 20}},
678
    },
679
    // event_id 52 to 55 affect category "FinServices"
680
    {
681
        /** event_id */ 52,
682
        /** mutually_exclusive_events */ {53},
683
        /** text */
684
        "Fintech Startups Disrupt Traditional Banking, Providing Innovative Financial "
685
        "Services",
686
        /** duration */ 6,
687
        /** percentage_permille */ 15,
688
        /** type_of_event */ category,
689
        /** category */ 10,
690
        /** modifiers */
691
        {{standard_deviation, 0.1}, {mean, 7}, {lower_limit, 0}, {upper_limit, 25}},
692
    },
693
    {
694
        /** event_id */ 53,
695
        /** mutually_exclusive_events */ {52, 54, 55},
696
        /** text */ "Stock Market Crash Leads to Financial Turmoil and Investor Losses",
697
        /** duration */ 7,
698
        /** percentage_permille */ 12,
699
        /** type_of_event */ category,
700
        /** category */ 10,
701
        /** modifiers */
702
        {{standard_deviation, 0.12}, {mean, -4}, {lower_limit, -20}, {upper_limit, 0}},
703
    },
704
    {
705
        /** event_id */ 54,
706
        /** mutually_exclusive_events */ {53},
707
        /** text */
708
        "Introduction of Blockchain Technology Enhances Security and Efficiency in "
709
        "Financial Transactions",
710
        /** duration */ 5,
711
        /** percentage_permille */ 10,
712
        /** type_of_event */ category,
713
        /** category */ 10,
714
        /** modifiers */
715
        {{standard_deviation, 0.1}, {mean, 5}, {lower_limit, 0}, {upper_limit, 20}},
716
    },
717
    {
718
        /** event_id */ 55,
719
        /** mutually_exclusive_events */ {53},
720
        /** text */
721
        "Digital Wallets Gain Popularity, Simplifying Payment Processes and Increasing "
722
        "Financial Inclusion",
723
        /** duration */ 5,
724
        /** percentage_permille */ 8,
725
        /** type_of_event */ category,
726
        /** category */ 10,
727
        /** modifiers */
728
        {{standard_deviation, 0.1}, {mean, 4}, {lower_limit, 0}, {upper_limit, 15}},
729
    },
730
    // event_id 56 to 61 affect category "Food&Beverage"
731
    {
732
        /** event_id */ 56,
733
        /** mutually_exclusive_events */ {},
734
        /** text */
735
        "Plant-Based Food Trend Continues to Grow, Offering Healthier and Sustainable "
736
        "Options",
737
        /** duration */ 6,
738
        /** percentage_permille */ 10,
739
        /** type_of_event */ category,
740
        /** category */ 11,
741
        /** modifiers */
742
        {{standard_deviation, 0.1}, {mean, 5}, {lower_limit, 0}, {upper_limit, 20}},
743
    },
744
    {
745
        /** event_id */ 57,
746
        /** mutually_exclusive_events */ {},
747
        /** text */
748
        "Food Safety Scandal Raises Concerns About Contaminated Products and Consumer "
749
        "Health",
750
        /** duration */ 7,
751
        /** percentage_permille */ 12,
752
        /** type_of_event */ category,
753
        /** category */ 11,
754
        /** modifiers */
755
        {{standard_deviation, 0.12}, {mean, -4}, {lower_limit, -20}, {upper_limit, 0}},
756
    },
757
    {
758
        /** event_id */ 58,
759
        /** mutually_exclusive_events */ {},
760
        /** text */
761
        "Introduction of Innovative Cooking Techniques Enhances Culinary Experiences",
762
        /** duration */ 5,
763
        /** percentage_permille */ 8,
764
        /** type_of_event */ category,
765
        /** category */ 11,
766
        /** modifiers */
767
        {{standard_deviation, 0.1}, {mean, 4}, {lower_limit, 0}, {upper_limit, 15}},
768
    },
769
    {
770
        /** event_id */ 59,
771
        /** mutually_exclusive_events */ {},
772
        /** text */
773
        "Global Food Shortage Crisis Impacts Prices and Availability of Essential "
774
        "Commodities",
775
        /** duration */ 6,
776
        /** percentage_permille */ 15,
777
        /** type_of_event */ category,
778
        /** category */ 11,
779
        /** modifiers */
780
        {{standard_deviation, 0.1}, {mean, -7}, {lower_limit, -25}, {upper_limit, 0}},
781
    },
782
    {
783
        /** event_id */ 60,
784
        /** mutually_exclusive_events */ {},
785
        /** text */
786
        "Rise of Food Delivery Services Provides Convenient and Wide-ranging Dining "
787
        "Options",
788
        /** duration */ 5,
789
        /** percentage_permille */ 8,
790
        /** type_of_event */ category,
791
        /** category */ 11,
792
        /** modifiers */
793
        {{standard_deviation, 0.1}, {mean, 4}, {lower_limit, 0}, {upper_limit, 15}},
794
    },
795
    {
796
        /** event_id */ 61,
797
        /** mutually_exclusive_events */ {},
798
        /** text */
799
        "Growing Demand for Organic and Locally Sourced Food Drives Sustainable "
800
        "Farming Practices",
801
        /** duration */ 6,
802
        /** percentage_permille */ 10,
803
        /** type_of_event */ category,
804
        /** category */ 11,
805
        /** modifiers */
806
        {{standard_deviation, 0.1}, {mean, 5}, {lower_limit, 0}, {upper_limit, 20}},
807
    },
808
    // event_id 62 to 66 affect category "Healthcare"
809
    {
810
        /** event_id */ 62,
811
        /** mutually_exclusive_events */ {},
812
        /** text */
813
        "Advancements in Telemedicine Improve Access to Medical Care for Remote Areas",
814
        /** duration */ 6,
815
        /** percentage_permille */ 12,
816
        /** type_of_event */ category,
817
        /** category */ 12,
818
        /** modifiers */
819
        {{standard_deviation, 0.1}, {mean, 6}, {lower_limit, 0}, {upper_limit, 20}},
820
    },
821
    {
822
        /** event_id */ 63,
823
        /** mutually_exclusive_events */ {},
824
        /** text */
825
        "Outbreak of Global Pandemic Leads to Overwhelmed Healthcare Systems and High "
826
        "Mortality Rates",
827
        /** duration */ 8,
828
        /** percentage_permille */ 15,
829
        /** type_of_event */ category,
830
        /** category */ 12,
831
        /** modifiers */
832
        {{standard_deviation, 0.12}, {mean, 7}, {lower_limit, 0}, {upper_limit, 25}},
833
    },
834
    {
835
        /** event_id */ 64,
836
        /** mutually_exclusive_events */ {},
837
        /** text */
838
        "Development of Personalized Medicine Leads to More Effective Treatment and "
839
        "Prevention Strategies",
840
        /** duration */ 7,
841
        /** percentage_permille */ 10,
842
        /** type_of_event */ category,
843
        /** category */ 12,
844
        /** modifiers */
845
        {{standard_deviation, 0.1}, {mean, 5}, {lower_limit, 0}, {upper_limit, 20}},
846
    },
847
    {
848
        /** event_id */ 65,
849
        /** mutually_exclusive_events */ {},
850
        /** text */
851
        "Shortage of Healthcare Professionals Causes Strain on Medical Services and "
852
        "Longer Wait Times",
853
        /** duration */ 6,
854
        /** percentage_permille */ 12,
855
        /** type_of_event */ category,
856
        /** category */ 12,
857
        /** modifiers */
858
        {{standard_deviation, 0.12}, {mean, -4}, {lower_limit, -20}, {upper_limit, 0}},
859
    },
860
    {
861
        /** event_id */ 66,
862
        /** mutually_exclusive_events */ {},
863
        /** text */
864
        "Advancements in Gene Editing Technology Open New Avenues for Precision "
865
        "Medicine",
866
        /** duration */ 7,
867
        /** percentage_permille */ 12,
868
        /** type_of_event */ category,
869
        /** category */ 12,
870
        /** modifiers */
871
        {{standard_deviation, 0.1}, {mean, 6}, {lower_limit, 0}, {upper_limit, 20}},
872
    },
873
    // event_id 67 to 74 affect category "Tech"
874
    {
875
        /** event_id */ 67,
876
        /** mutually_exclusive_events */ {},
877
        /** text */
878
        "Breakthrough in Artificial Intelligence Leads to Significant Advancements in "
879
        "Automation and Machine Learning",
880
        /** duration */ 6,
881
        /** percentage_permille */ 12,
882
        /** type_of_event */ category,
883
        /** category */ 13,
884
        /** modifiers */
885
        {{standard_deviation, 0.1}, {mean, 6}, {lower_limit, 0}, {upper_limit, 20}},
886
    },
887
    {
888
        /** event_id */ 68,
889
        /** mutually_exclusive_events */ {},
890
        /** text */
891
        "Cybersecurity Breach Exposes Sensitive Data and Raises Concerns Over Digital "
892
        "Privacy",
893
        /** duration */ 7,
894
        /** percentage_permille */ 10,
895
        /** type_of_event */ category,
896
        /** category */ 13,
897
        /** modifiers */
898
        {{standard_deviation, 0.3}, {mean, -5}, {lower_limit, -15}, {upper_limit, 0}},
899
    },
900
    {
901
        /** event_id */ 69,
902
        /** mutually_exclusive_events */ {},
903
        /** text */
904
        "Emergence of 5G Technology Revolutionizes Connectivity and Enables Faster "
905
        "Data Transfer",
906
        /** duration */ 5,
907
        /** percentage_permille */ 10,
908
        /** type_of_event */ category,
909
        /** category */ 13,
910
        /** modifiers */
911
        {{standard_deviation, 0.1}, {mean, 5}, {lower_limit, 0}, {upper_limit, 15}},
912
    },
913
    {
914
        /** event_id */ 70,
915
        /** mutually_exclusive_events */ {},
916
        /** text */
917
        "Failure of Major Tech Infrastructure Disrupts Services and Causes Widespread "
918
        "Outages",
919
        /** duration */ 6,
920
        /** percentage_permille */ 12,
921
        /** type_of_event */ category,
922
        /** category */ 13,
923
        /** modifiers */
924
        {{standard_deviation, 0.12}, {mean, -4}, {lower_limit, -20}, {upper_limit, 0}},
925
    },
926
    {
927
        /** event_id */ 71,
928
        /** mutually_exclusive_events */ {},
929
        /** text */
930
        "Advancements in Quantum Computing Unlock New Possibilities for Solving "
931
        "Complex Problems",
932
        /** duration */ 7,
933
        /** percentage_permille */ 12,
934
        /** type_of_event */ category,
935
        /** category */ 13,
936
        /** modifiers */
937
        {{standard_deviation, 0.1}, {mean, 6}, {lower_limit, 0}, {upper_limit, 20}},
938
    },
939
    {
940
        /** event_id */ 72,
941
        /** mutually_exclusive_events */ {},
942
        /** text */
943
        "Rapid Advancements in Augmented Reality (AR) and Virtual Reality (VR) Enhance "
944
        "User Experiences",
945
        /** duration */ 6,
946
        /** percentage_permille */ 10,
947
        /** type_of_event */ category,
948
        /** category */ 13,
949
        /** modifiers */
950
        {{standard_deviation, 0.1}, {mean, 5}, {lower_limit, 0}, {upper_limit, 20}},
951
    },
952
    {
953
        /** event_id */ 73,
954
        /** mutually_exclusive_events */ {},
955
        /** text */
956
        "Advancements in Robotics and Automation Transform Manufacturing and Increase "
957
        "Efficiency",
958
        /** duration */ 6,
959
        /** percentage_permille */ 12,
960
        /** type_of_event */ category,
961
        /** category */ 13,
962
        /** modifiers */
963
        {{standard_deviation, 0.1}, {mean, 6}, {lower_limit, 0}, {upper_limit, 20}},
964
    },
965
    {
966
        /** event_id */ 74,
967
        /** mutually_exclusive_events */ {},
968
        /** text */
969
        "Emergence of Artificial General Intelligence (AGI) Raises Ethical and "
970
        "Societal Concerns",
971
        /** duration */ 7,
972
        /** percentage_permille */ 10,
973
        /** type_of_event */ category,
974
        /** category */ 13,
975
        /** modifiers */
976
        {{standard_deviation, 0.1}, {mean, -5}, {lower_limit, -15}, {upper_limit, 0}},
977
    },
978
    // event_id 75 to 79 affect category "RealEstate"
979
    {
980
        /** event_id */ 75,
981
        /** mutually_exclusive_events */ {76},
982
        /** text */
983
        "Strong Demand and Low Mortgage Rates Drive Real Estate Market Growth",
984
        /** duration */ 6,
985
        /** percentage_permille */ 10,
986
        /** type_of_event */ category,
987
        /** category */ 14,
988
        /** modifiers */
989
        {{standard_deviation, 0.1}, {mean, 5}, {lower_limit, 0}, {upper_limit, 20}},
990
    },
991
    {
992
        /** event_id */ 76,
993
        /** mutually_exclusive_events */ {75},
994
        /** text */
995
        "Economic Downturn Leads to Decline in Real Estate Prices and Sales",
996
        /** duration */ 7,
997
        /** percentage_permille */ 10,
998
        /** type_of_event */ category,
999
        /** category */ 14,
1000
        /** modifiers */
1001
        {{standard_deviation, 0.1}, {mean, -5}, {lower_limit, -15}, {upper_limit, 0}},
1002
    },
1003
    {
1004
        /** event_id */ 77,
1005
        /** mutually_exclusive_events */ {},
1006
        /** text */
1007
        "Rapid Urbanization and Infrastructure Development Boost Real Estate "
1008
        "Investments",
1009
        /** duration */ 6,
1010
        /** percentage_permille */ 12,
1011
        /** type_of_event */ category,
1012
        /** category */ 14,
1013
        /** modifiers */
1014
        {{standard_deviation, 0.1}, {mean, 6}, {lower_limit, 0}, {upper_limit, 20}},
1015
    },
1016
    {
1017
        /** event_id */ 78,
1018
        /** mutually_exclusive_events */ {},
1019
        /** text */
1020
        "Natural Disasters Cause Property Damage and Impact Real Estate Market",
1021
        /** duration */ 7,
1022
        /** percentage_permille */ 10,
1023
        /** type_of_event */ category,
1024
        /** category */ 14,
1025
        /** modifiers */
1026
        {{standard_deviation, 0.1}, {mean, -5}, {lower_limit, -15}, {upper_limit, 0}},
1027
    },
1028
    {
1029
        /** event_id */ 79,
1030
        /** mutually_exclusive_events */ {},
1031
        /** text */
1032
        "Investigation Reveals Widespread Cases of Substandard Construction Projects",
1033
        /** duration */ 5,
1034
        /** percentage_permille */ 10,
1035
        /** type_of_event */ category,
1036
        /** category */ 14,
1037
        /** modifiers */
1038
        {{standard_deviation, 0.12}, {mean, -4}, {lower_limit, -20}, {upper_limit, 0}},
1039
    },
1040
    // event_id 80 to 85 affect category "RealEstate"
1041
    {
1042
        /** event_id */ 80,
1043
        /** mutually_exclusive_events */ {},
1044
        /** text */
1045
        "Shift in Consumer Behavior Leads to Decline in Brick-and-Mortar Retail Stores",
1046
        /** duration */ 7,
1047
        /** percentage_permille */ 10,
1048
        /** type_of_event */ category,
1049
        /** category */ 15,
1050
        /** modifiers */
1051
        {{standard_deviation, 0.1}, {mean, -5}, {lower_limit, -15}, {upper_limit, 0}},
1052
    },
1053
    {
1054
        /** event_id */ 81,
1055
        /** mutually_exclusive_events */ {},
1056
        /** text */
1057
        "Adoption of Technology Enhances Customer Experience in Physical Retail Stores",
1058
        /** duration */ 6,
1059
        /** percentage_permille */ 12,
1060
        /** type_of_event */ category,
1061
        /** category */ 15,
1062
        /** modifiers */
1063
        {{standard_deviation, 0.1}, {mean, 6}, {lower_limit, 0}, {upper_limit, 20}},
1064
    },
1065
    {
1066
        /** event_id */ 82,
1067
        /** mutually_exclusive_events */ {},
1068
        /** text */
1069
        "Integration of Augmented Reality Enhances In-Store Shopping Experience",
1070
        /** duration */ 6,
1071
        /** percentage_permille */ 10,
1072
        /** type_of_event */ category,
1073
        /** category */ 15,
1074
        /** modifiers */
1075
        {{standard_deviation, 0.1}, {mean, 5}, {lower_limit, 0}, {upper_limit, 20}},
1076
    },
1077
    {
1078
        /** event_id */ 83,
1079
        /** mutually_exclusive_events */ {},
1080
        /** text */
1081
        "Increase in Online Counterfeit Products Impacts Consumer Trust in E-commerce",
1082
        /** duration */ 7,
1083
        /** percentage_permille */ 10,
1084
        /** type_of_event */ category,
1085
        /** category */ 15,
1086
        /** modifiers */
1087
        {{standard_deviation, 0.1}, {mean, -5}, {lower_limit, -15}, {upper_limit, 0}},
1088
    },
1089
    {
1090
        /** event_id */ 84,
1091
        /** mutually_exclusive_events */ {},
1092
        /** text */
1093
        "Retailers Embrace Sustainable Practices, Driving Eco-friendly Consumer "
1094
        "Choices",
1095
        /** duration */ 6,
1096
        /** percentage_permille */ 12,
1097
        /** type_of_event */ category,
1098
        /** category */ 15,
1099
        /** modifiers */
1100
        {{standard_deviation, 0.1}, {mean, 6}, {lower_limit, 0}, {upper_limit, 20}},
1101
    },
1102
    {
1103
        /** event_id */ 85,
1104
        /** mutually_exclusive_events */ {},
1105
        /** text */ "Supply Chain Disruptions Impact Retail Inventory and Availability",
1106
        /** duration */ 7,
1107
        /** percentage_permille */ 10,
1108
        /** type_of_event */ category,
1109
        /** category */ 15,
1110
        /** modifiers */
1111
        {{standard_deviation, 0.1}, {mean, -5}, {lower_limit, -15}, {upper_limit, 0}},
1112
    },
1113
    // event_id 86 to __ affect category "Telecom"
1114
    {
1115
        /** event_id */ 86,
1116
        /** mutually_exclusive_events */ {},
1117
        /** text */
1118
        "Deployment of 5G Networks Enables Faster and More Reliable Connectivity",
1119
        /** duration */ 6,
1120
        /** percentage_permille */ 10,
1121
        /** type_of_event */ category,
1122
        /** category */ 16,
1123
        /** modifiers */
1124
        {{standard_deviation, 0.1}, {mean, 5}, {lower_limit, 0}, {upper_limit, 20}},
1125
    },
1126
    {
1127
        /** event_id */ 87,
1128
        /** mutually_exclusive_events */ {},
1129
        /** text */
1130
        "Cybersecurity Breach in Telecom Networks Raises Concerns over Data Privacy",
1131
        /** duration */ 7,
1132
        /** percentage_permille */ 10,
1133
        /** type_of_event */ category,
1134
        /** category */ 16,
1135
        /** modifiers */
1136
        {{standard_deviation, 0.1}, {mean, -5}, {lower_limit, -15}, {upper_limit, 0}},
1137
    },
1138
    {
1139
        /** event_id */ 88,
1140
        /** mutually_exclusive_events */ {},
1141
        /** text */
1142
        "Advancements in Voice Recognition Technology Enhance Telecommunication "
1143
        "Services",
1144
        /** duration */ 6,
1145
        /** percentage_permille */ 12,
1146
        /** type_of_event */ category,
1147
        /** category */ 16,
1148
        /** modifiers */
1149
        {{standard_deviation, 0.1}, {mean, 6}, {lower_limit, 0}, {upper_limit, 20}},
1150
    },
1151
    {
1152
        /** event_id */ 89,
1153
        /** mutually_exclusive_events */ {},
1154
        /** text */
1155
        "Network Outage Disrupts Telecommunication Services in Several Regions",
1156
        /** duration */ 7,
1157
        /** percentage_permille */ 10,
1158
        /** type_of_event */ category,
1159
        /** category */ 16,
1160
        /** modifiers */
1161
        {{standard_deviation, 0.1}, {mean, -5}, {lower_limit, -15}, {upper_limit, 0}},
1162
    },
1163
    {
1164
        /** event_id */ 90,
1165
        /** mutually_exclusive_events */ {},
1166
        /** text */
1167
        "Telecom Service Outage Caused by Natural Disaster Disrupts Communication",
1168
        /** duration */ 7,
1169
        /** percentage_permille */ 10,
1170
        /** type_of_event */ category,
1171
        /** category */ 16,
1172
        /** modifiers */
1173
        {{standard_deviation, 0.1}, {mean, -5}, {lower_limit, -15}, {upper_limit, 0}},
1174
    },
1175
    {
1176
        /** event_id */ 91,
1177
        /** mutually_exclusive_events */ {},
1178
        /** text */
1179
        "Telecom Regulatory Changes Affect Pricing and Service Plans for Consumers",
1180
        /** duration */ 7,
1181
        /** percentage_permille */ 10,
1182
        /** type_of_event */ category,
1183
        /** category */ 16,
1184
        /** modifiers */
1185
        {{standard_deviation, 0.1}, {mean, -5}, {lower_limit, -15}, {upper_limit, 0}},
1186
    },
1187
    // event_id 92 to 98 affect pick_random_stock
1188
    {
1189
        /** event_id */ 92,
1190
        /** mutually_exclusive_events */ {},
1191
        /** text */ "Leadership Change: CEO Resigns, New CEO Appointed",
1192
        /** duration */ 3,
1193
        /** percentage_permille */ 10,
1194
        /** type_of_event */ pick_random_stock,
1195
        /** category */ 0,
1196
        /** modifiers */
1197
        {{standard_deviation, 0.2}, {mean, 0}, {lower_limit, -15}, {upper_limit, 15}},
1198
    },
1199
    {
1200
        /** event_id */ 93,
1201
        /** mutually_exclusive_events */ {},
1202
        /** text */
1203
        "Labor Strike: Employees Go on Strike Demanding Better Working Conditions",
1204
        /** duration */ 3,
1205
        /** percentage_permille */ 12,
1206
        /** type_of_event */ pick_random_stock,
1207
        /** category */ 0,
1208
        /** modifiers */
1209
        {{standard_deviation, 0.1}, {mean, -6}, {lower_limit, -20}, {upper_limit, 0}},
1210
    },
1211
    {
1212
        /** event_id */ 94,
1213
        /** mutually_exclusive_events */ {97},
1214
        /** text */ "Acquires a Competitor, Expands Market Presence",
1215
        /** duration */ 4,
1216
        /** percentage_permille */ 10,
1217
        /** type_of_event */ pick_random_stock,
1218
        /** category */ 0,
1219
        /** modifiers */
1220
        {{standard_deviation, 0.2}, {mean, 5}, {lower_limit, 0}, {upper_limit, 15}},
1221
    },
1222
    {
1223
        /** event_id */ 95,
1224
        /** mutually_exclusive_events */ {98},
1225
        /** text */ "Market Slump Leads to Business Contraction",
1226
        /** duration */ 4,
1227
        /** percentage_permille */ 10,
1228
        /** type_of_event */ pick_random_stock,
1229
        /** category */ 0,
1230
        /** modifiers */
1231
        {{standard_deviation, 0.3}, {mean, -7}, {lower_limit, -20}, {upper_limit, 0}},
1232
    },
1233
    {
1234
        /** event_id */ 96,
1235
        /** mutually_exclusive_events */ {},
1236
        /** text */ "Regulatory Non-Compliance: Fails to Meet Environmental Standards",
1237
        /** duration */ 5,
1238
        /** percentage_permille */ 10,
1239
        /** type_of_event */ pick_random_stock,
1240
        /** category */ 0,
1241
        /** modifiers */
1242
        {{standard_deviation, 0.1}, {mean, -2}, {lower_limit, -10}, {upper_limit, 0}},
1243
    },
1244
    {
1245
        /** event_id */ 97,
1246
        /** mutually_exclusive_events */ {94, 98},
1247
        /** text */ "Faces Bankruptcy, Forced to Cease Operations",
1248
        /** duration */ 6,
1249
        /** percentage_permille */ 10,
1250
        /** type_of_event */ pick_random_stock,
1251
        /** category */ 0,
1252
        /** modifiers */
1253
        {{standard_deviation, 0.5}, {mean, -9}, {lower_limit, -30}, {upper_limit, 0}},
1254
    },
1255
    {
1256
        /** event_id */ 98,
1257
        /** mutually_exclusive_events */ {95, 97},
1258
        /** text */ "Opens New Branches in Multiple Locations",
1259
        /** duration */ 6,
1260
        /** percentage_permille */ 10,
1261
        /** type_of_event */ pick_random_stock,
1262
        /** category */ 0,
1263
        /** modifiers */
1264
        {{standard_deviation, 0.5}, {mean, 7}, {lower_limit, 0}, {upper_limit, 20}},
1265
    },
1266
};
1267

1268
// print a map
1269
void print_map(const std::map<unsigned int, std::vector<unsigned int>> & map) {
×
1270
    for (const auto & i : map) {
×
1271
        std::cout << i.first << ": ";
×
1272
        for (unsigned int j : i.second) {
×
1273
            std::cout << j << " ";
×
1274
        }
1275
        std::cout << std::endl;
×
1276
    }
1277
}
1278

1279
/*
1280
int main() {
1281
    // This outputs 0.1
1282
    std::cout << all_stock_events[0].modifiers[standard_deviation] << std::endl;
1283
    // Checks the events for mutual exclusivity
1284
    print_map(check_mutual_exclusivity(all_stock_events));
1285
    // Outputs:
1286
    // 0: 2
1287
    // 1: 2
1288
    // 2:
1289
    return 0;
1290
}
1291
*/
1292

1293
mutuallyExclusiveMap build_mutual_exclusivity_map(
58✔
1294
    const std::vector<Stock_event> & all_events) {
1295
    mutuallyExclusiveMap mut_excl_map;
58✔
1296
    // Build the map
1297
    for (unsigned int i = 0; i < all_events.size(); i++) {
5,128✔
1298
        for (unsigned int j = 0; j < all_events[i].mutually_exclusive_events.size();
6,519✔
1299
             j++) {
1300
            mut_excl_map[all_events[i].event_id].emplace_back(
2,898✔
1301
                all_events[i].mutually_exclusive_events[j]);
1,449✔
1302
        }
1303
    }
1304
    return mut_excl_map;
58✔
1305
}
×
1306

1307
mutuallyExclusiveMap check_mutual_exclusivity(
7✔
1308
    const std::vector<Stock_event> & all_events) {
1309
    mutuallyExclusiveMap mut_excl_map = build_mutual_exclusivity_map(all_events);
7✔
1310

1311
    // If two events are mutually exclusive, they should be in each other's list.
1312
    // Remove such two events from the map.
1313
    // E.g. {0: [1,2], 1: [0], 2:[]} -> {0: [2]}
1314
    // In this case, 2 does not state that it is mutually exclusive with 0.
1315
    for (const auto & i : mut_excl_map) {
168✔
1316
        for (unsigned int j : i.second) {
259✔
1317
            if (std::find(mut_excl_map[j].begin(), mut_excl_map[j].end(), i.first) !=
98✔
1318
                mut_excl_map[j].end()) {
196✔
1319
                mut_excl_map[i.first].erase(std::remove(mut_excl_map[i.first].begin(),
294✔
1320
                                                mut_excl_map[i.first].end(), j),
98✔
1321
                    mut_excl_map[i.first].end());
98✔
1322
                mut_excl_map[j].erase(std::remove(mut_excl_map[j].begin(),
294✔
1323
                                          mut_excl_map[j].end(), i.first),
98✔
1324
                    mut_excl_map[j].end());
196✔
1325
            }
1326
        }
1327
    }
1328
    return mut_excl_map;
7✔
1329
}
×
1330

1331
bool assertion_check_mutual_exclusivity(void) {
7✔
1332
    /// @todo: put assertion_check_uniq_events into a separate file, e.g. tests.cpp
1333
    // Assert that the every key has no value.
1334
    auto checkEventResult = check_mutual_exclusivity(all_stock_events);
7✔
1335
    for (const auto & [key, value] : checkEventResult) {
168✔
1336
        // If the assertion is raised, print the checkEventResult and exit the
1337
        // program.
1338
        if (!value.empty()) {
161✔
1339
            std::cout << "Error: detected mutual exclusivity violation! Details:"
×
1340
                      << std::endl;
×
1341
            print_map(checkEventResult);
×
1342
            return true;
×
1343
        }
1344
    }
1345
    return false;
7✔
1346
}
7✔
1347

1348
std::vector<Stock_event> pick_events(
44✔
1349
    const std::vector<Stock_event> & all_events, unsigned int num_events) {
1350
    std::vector<Stock_event> picked_events;
44✔
1351
    unsigned int total_permille = 0;
44✔
1352
    /// @todo Optimize this loop so that we don't have to calculate the total_permille
1353
    /// every time we pick an event.
1354
    for (const Stock_event & event : all_events) {
4,400✔
1355
        total_permille += event.probability_permille;
4,356✔
1356
    }
1357
    // Pick num_events random events
1358
    for (unsigned int i = 0; i < num_events; i++) {
112✔
1359
        unsigned int _total_permille = total_permille;
68✔
1360
        /** When picking the event, consider event.probability_permille.
1361
         * E.g. if there are 3 events with probability_permille 10, 20, 30.
1362
         * total_permille = 60;
1363
         * random_permille = 0 to 59;
1364
         * If random_permille is 0 to 9, pick the first event;
1365
         * If random_permille is 10 to 29, pick the second event;
1366
         * If random_permille is 30 to 59, pick the third event.
1367
         */
1368
        unsigned int random_permille = random_integer(_total_permille);
68✔
1369
        for (const Stock_event & event : all_events) {
3,311✔
1370
            _total_permille -= event.probability_permille;
3,311✔
1371
            if (_total_permille <= random_permille) {
3,311✔
1372
                picked_events.emplace_back(event);
68✔
1373
                break;
68✔
1374
            }
1375
        }
1376
    }
1377
    return uniq_events(picked_events, all_stock_events);
88✔
1378
}
44✔
1379

1380
std::vector<Stock_event> uniq_events(std::vector<Stock_event> picked_events,
51✔
1381
    const std::vector<Stock_event> & all_events) {
1382
    mutuallyExclusiveMap mut_excl_map = build_mutual_exclusivity_map(all_events);
51✔
1383

1384
    unsigned int first = 0;
51✔
1385
    while (first < picked_events.size()) {
133✔
1386
        unsigned int second = first + 1;
82✔
1387
        while (second < picked_events.size()) {
120✔
1388
            const bool isRandomStockEvents =
1389
                picked_events[first].type_of_event == pick_random_stock;
38✔
1390
            const bool isIdenticalEvents =
1391
                picked_events[first] == picked_events[second];
38✔
1392

1393
            if (!isRandomStockEvents && isIdenticalEvents) {
38✔
1394
                picked_events.erase(picked_events.begin() + second);
×
1395
                continue;
×
1396
            }
1397

1398
            const bool areMutuallyExclusiveEvents =
1399
                std::find(mut_excl_map[picked_events[first].event_id].begin(),
38✔
1400
                    mut_excl_map[picked_events[first].event_id].end(),
38✔
1401
                    picked_events[second].event_id) !=
76✔
1402
                mut_excl_map[picked_events[first].event_id].end();
38✔
1403

1404
            if (areMutuallyExclusiveEvents) {
38✔
1405
                picked_events.erase(picked_events.begin() + second);
7✔
1406
                continue;
7✔
1407
            }
1408

1409
            second++;
31✔
1410
        }
1411
        first++;
82✔
1412
    }
1413
    return picked_events;
102✔
1414
}
51✔
1415

1416
void assertion_check_uniq_events(void) {
7✔
1417
    /// @todo: put assertion_check_uniq_events into a separate file, e.g. tests.cpp
1418
    Stock_event craftedEvent = Stock_event{
7✔
1419
        /* event_id */ 0,
1420
        /* mutually_exclusive_events */ {1},
1421
        /* text */ "Crafted Event",
1422
        /* duration */ 1,
1423
        /* percentage_permille */ 0,
1424
        /* type_of_event */ pick_random_stock,
1425
        /* category. Assign this to zero first. */ 0,
1426
        /* modifiers */
1427
        {{standard_deviation, 0}, {mean, 0}, {lower_limit, 0}, {upper_limit, 0}},
1428
    };
7✔
1429
    Stock_event craftedEvent_2 = craftedEvent;
7✔
1430
    Stock_event craftedEvent_3 = Stock_event{
7✔
1431
        /* event_id */ 1,
1432
        /* mutually_exclusive_events */ {0},
1433
        /* text */ "Crafted Event",
1434
        /* duration */ 1,
1435
        /* percentage_permille */ 0,
1436
        /* type_of_event */ all_stocks,
1437
        /* category. Assign this to zero first. */ 0,
1438
        /* modifiers */
1439
        {{standard_deviation, 0}, {mean, 0}, {lower_limit, 0}, {upper_limit, 0}},
1440
    };
7✔
1441
    std::vector<Stock_event> picked_events = {
1442
        craftedEvent, craftedEvent_2, craftedEvent_3};
35✔
1443
    std::vector<Stock_event> uniqEvents = uniq_events(picked_events, picked_events);
7✔
1444

1445
    std::cout << uniqEvents.size() << std::endl;
7✔
1446
    if (!(uniqEvents.size() == 2)) {
7✔
1447
        std::cout << uniqEvents.size() << std::endl;
×
1448
        assert(false &&
×
1449
               "Detected duplicate/mutually-exclusive events after uniq_events()");
1450
    }
1451
}
7✔
1452

1453
Stock_event getStockSplitEvent(void) {
×
1454
    return Stock_event{
1455
        /* event_id */ 65535,
1456
        /* mutually_exclusive_events */ {},
1457
        /* text */
1458
        " has rised too high and the company has decide a stock split on it.",
1459
        /* duration */ 1,
1460
        /* percentage_permille */ 0,
1461
        /* type_of_event */ pick_random_stock,
1462
        /* category. Assign this to zero first. */ 0,
1463
        /* modifiers*/
1464
        {{standard_deviation, 0}, {mean, 0}, {lower_limit, 0}, {upper_limit, 0}},
1465
    };
1466
}
STATUS · Troubleshooting · Open an Issue · Sales · Support · CAREERS · ENTERPRISE · START FREE · SCHEDULE DEMO
ANNOUNCEMENTS · TWITTER · TOS & SLA · Supported CI Services · What's a CI service? · Automated Testing

© 2026 Coveralls, Inc