fork download
  1. #include <iostream>
  2. #include <random>
  3.  
  4. #include <map>
  5. #include <iomanip>
  6.  
  7. int keep_out_of_range(int low, int high, int number)
  8. {
  9. if (number >= low && number <= high)
  10. {
  11. int halfway = (low + high) / 2;
  12. int halfrange = (high - low) / 2;
  13. if (number > halfway)
  14. number += halfrange;
  15. else
  16. {
  17. number -= halfrange + 1;
  18. }
  19. }
  20. return number;
  21. }
  22.  
  23. int main()
  24. {
  25. const int MinGen = -100;
  26. const int MaxGen = 100;
  27. std::default_random_engine generator;
  28. std::uniform_int_distribution<int> distribution(MinGen, MaxGen);
  29.  
  30.  
  31. const int nrolls = 10000; // number of experiments
  32.  
  33. // generate numbers, make a histogram of distribution
  34. std::map<int, int> histogram;
  35. for (int i = 0; i < nrolls; i++) {
  36.  
  37. int random_number = distribution(generator); // here's where # is generated
  38. random_number = keep_out_of_range(10, 20, random_number);
  39.  
  40. ++histogram[random_number];
  41. }
  42.  
  43. // print the histogram
  44. for (auto p : histogram) {
  45. std::cout << std::fixed << std::setprecision(1) << std::setw(2)
  46. << p.first << ' ' << std::string(p.second/(nrolls/(10*(MaxGen-MinGen))), '*') << '\n';
  47. }
  48. return 0;
  49. }
Success #stdin #stdout 0s 15240KB
stdin
Standard input is empty
stdout
-100 ***********
-99 *********
-98 ********
-97 *********
-96 *********
-95 **********
-94 **********
-93 **********
-92 *********
-91 *********
-90 *********
-89 ***********
-88 ***********
-87 ********
-86 ***********
-85 *******
-84 *********
-83 ***********
-82 **********
-81 *********
-80 ***********
-79 ********
-78 ***********
-77 *******
-76 *******
-75 ***********
-74 *********
-73 **********
-72 ***********
-71 ***********
-70 ********
-69 *********
-68 ************
-67 *********
-66 ************
-65 *********
-64 *********
-63 **********
-62 *********
-61 **********
-60 *********
-59 *********
-58 ********
-57 **********
-56 ***********
-55 ***********
-54 ********
-53 ***********
-52 **********
-51 **********
-50 ********
-49 **********
-48 **********
-47 **********
-46 ********
-45 *********
-44 **********
-43 **********
-42 ***********
-41 *******
-40 ********
-39 *******
-38 *********
-37 *********
-36 *********
-35 *********
-34 **********
-33 *********
-32 ********
-31 ************
-30 *********
-29 *******
-28 *********
-27 *********
-26 ***********
-25 ***********
-24 ***********
-23 **********
-22 *********
-21 ******
-20 *********
-19 ********
-18 **********
-17 *************
-16 *********
-15 ********
-14 *********
-13 *********
-12 ********
-11 ***********
-10 ************
-9 *********
-8 *******
-7 ********
-6 ********
-5 ***********
-4 **********
-3 **********
-2 ************
-1 **********
 0 *********
 1 **********
 2 ************
 3 **************
 4 **********************
 5 ***********************
 6 ***************
 7 *****************
 8 *******************
 9 ***********************
21 **********************
22 ******************
23 ********************
24 **********************
25 *****************
26 **********
27 ********
28 *********
29 **********
30 ***********
31 ***********
32 *********
33 ********
34 *********
35 ********
36 *********
37 *********
38 ************
39 *********
40 ********
41 **********
42 ***********
43 **********
44 *********
45 ********
46 *********
47 *******
48 ******
49 **********
50 **********
51 **********
52 *********
53 **********
54 ************
55 ********
56 ***********
57 ***********
58 *****
59 *********
60 ********
61 **********
62 *********
63 *************
64 ***********
65 **********
66 *********
67 *********
68 *******
69 **********
70 **********
71 *********
72 **********
73 *********
74 ***************
75 ***********
76 **********
77 *********
78 *********
79 ********
80 *********
81 *********
82 *********
83 ******
84 *********
85 *********
86 ********
87 ***********
88 ***********
89 *********
90 *********
91 **********
92 *********
93 **********
94 *********
95 **********
96 **********
97 **********
98 *************
99 ***********
100 *********