Created
September 12, 2018 14:41
-
-
Save HurricanKai/95ff401ea6b22591e581cce4415d7279 to your computer and use it in GitHub Desktop.
Testing RNGCryptoServiceProvider
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| using CsvHelper; | |
| using System; | |
| using System.Collections.Generic; | |
| using System.IO; | |
| using System.Security.Cryptography; | |
| using System.Collections.Concurrent; | |
| using System.Threading.Tasks; | |
| namespace SecurityGame | |
| { | |
| class Program | |
| { | |
| public static Level[] Levels = new Level[] | |
| { | |
| new Level0(), | |
| new Level1(), | |
| }; | |
| static void Main(string[] args) | |
| { | |
| using (var t = new StreamWriter(File.Create("./table.csv"))) | |
| { | |
| using (var csv = new CsvWriter(t)) | |
| { | |
| const int c = 2000000000; | |
| var stats = new int[Byte.MaxValue + 1]; | |
| for (int i = 0; i < stats.Length; i++) | |
| stats[i] = 0; | |
| RNGCryptoServiceProvider p = new RNGCryptoServiceProvider(); | |
| Parallel.For(0, c, x => | |
| { | |
| var buff = new Byte[1]; | |
| p.GetBytes(buff); | |
| stats[buff[0]]++; | |
| }); | |
| var expected = (float)(c / Byte.MaxValue); | |
| /*Console.WriteLine("Expected Value " + expected); | |
| Console.WriteLine(); | |
| Console.WriteLine(); | |
| Console.WriteLine("absolute Value"); | |
| Console.WriteLine(); | |
| Console.WriteLine(); | |
| for (int i = 0; i < stats.Length; i++) | |
| Console.WriteLine($"{i.ToString("000")} | {stats[i].ToString("00000000")}"); | |
| Console.WriteLine(); | |
| Console.WriteLine(); | |
| Console.WriteLine("absolute Error"); | |
| Console.WriteLine(); | |
| Console.WriteLine(); | |
| for (int i = 0; i < stats.Length; i++) | |
| Console.WriteLine($"{i.ToString("000")} | {(stats[i] - expected).ToString("R")}"); | |
| Console.WriteLine(); | |
| Console.WriteLine(); | |
| Console.WriteLine("% Error"); | |
| Console.WriteLine(); | |
| Console.WriteLine(); | |
| for (int i = 0; i < stats.Length; i++) | |
| Console.WriteLine($"{i.ToString("000")} | {((stats[i] - expected) / expected).ToString("P")}"); | |
| */ | |
| var table = new List<object>(); | |
| for (int i = 0; i < stats.Length; i++) | |
| { | |
| table.Add(new { Value = i, | |
| absolute_Value = stats[i], | |
| absolute_Error = (stats[i] - expected), | |
| percentual_Error = ((stats[i] - expected) / expected) | |
| }); | |
| } | |
| csv.WriteRecords(table); | |
| csv.Flush(); | |
| Console.WriteLine("ok."); | |
| } | |
| } | |
| Console.ReadLine(); | |
| } | |
| } | |
| } |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Value | absolute_Value | absolute_Error | percentual_Error | |
|---|---|---|---|---|
| 000 | 07812782 | -30355 | -0,39 | |
| 001 | 07808698 | -34439 | -0,44 | |
| 002 | 07814114 | -29023 | -0,37 | |
| 003 | 07813364 | -29773 | -0,38 | |
| 004 | 07813385 | -29752 | -0,38 | |
| 005 | 07814613 | -28524 | -0,36 | |
| 006 | 07808894 | -34243 | -0,44 | |
| 007 | 07809286 | -33851 | -0,43 | |
| 008 | 07814553 | -28584 | -0,36 | |
| 009 | 07811441 | -31696 | -0,40 | |
| 010 | 07812512 | -30625 | -0,39 | |
| 011 | 07808047 | -35090 | -0,45 | |
| 012 | 07812852 | -30285 | -0,39 | |
| 013 | 07816168 | -26969 | -0,34 | |
| 014 | 07809848 | -33289 | -0,42 | |
| 015 | 07813432 | -29705 | -0,38 | |
| 016 | 07813663 | -29474 | -0,38 | |
| 017 | 07808839 | -34298 | -0,44 | |
| 018 | 07814538 | -28599 | -0,36 | |
| 019 | 07816967 | -26170 | -0,33 | |
| 020 | 07809129 | -34008 | -0,43 | |
| 021 | 07813191 | -29946 | -0,38 | |
| 022 | 07812083 | -31054 | -0,40 | |
| 023 | 07813044 | -30093 | -0,38 | |
| 024 | 07812576 | -30561 | -0,39 | |
| 025 | 07810256 | -32881 | -0,42 | |
| 026 | 07811354 | -31783 | -0,41 | |
| 027 | 07814716 | -28421 | -0,36 | |
| 028 | 07818263 | -24874 | -0,32 | |
| 029 | 07807403 | -35734 | -0,46 | |
| 030 | 07809351 | -33786 | -0,43 | |
| 031 | 07807899 | -35238 | -0,45 | |
| 032 | 07811900 | -31237 | -0,40 | |
| 033 | 07815346 | -27791 | -0,35 | |
| 034 | 07815943 | -27194 | -0,35 | |
| 035 | 07813196 | -29941 | -0,38 | |
| 036 | 07809047 | -34090 | -0,43 | |
| 037 | 07811917 | -31220 | -0,40 | |
| 038 | 07811501 | -31636 | -0,40 | |
| 039 | 07810972 | -32165 | -0,41 | |
| 040 | 07818495 | -24642 | -0,31 | |
| 041 | 07811641 | -31496 | -0,40 | |
| 042 | 07810090 | -33047 | -0,42 | |
| 043 | 07807669 | -35468 | -0,45 | |
| 044 | 07808184 | -34953 | -0,45 | |
| 045 | 07814431 | -28706 | -0,37 | |
| 046 | 07816835 | -26302 | -0,34 | |
| 047 | 07812920 | -30217 | -0,39 | |
| 048 | 07813161 | -29976 | -0,38 | |
| 049 | 07813177 | -29960 | -0,38 | |
| 050 | 07813037 | -30100 | -0,38 | |
| 051 | 07813316 | -29821 | -0,38 | |
| 052 | 07814604 | -28533 | -0,36 | |
| 053 | 07810179 | -32958 | -0,42 | |
| 054 | 07809552 | -33585 | -0,43 | |
| 055 | 07808006 | -35131 | -0,45 | |
| 056 | 07813772 | -29365 | -0,37 | |
| 057 | 07809500 | -33637 | -0,43 | |
| 058 | 07810870 | -32267 | -0,41 | |
| 059 | 07819180 | -23957 | -0,31 | |
| 060 | 07812022 | -31115 | -0,40 | |
| 061 | 07813204 | -29933 | -0,38 | |
| 062 | 07814189 | -28948 | -0,37 | |
| 063 | 07812212 | -30925 | -0,39 | |
| 064 | 07808881 | -34256 | -0,44 | |
| 065 | 07812645 | -30492 | -0,39 | |
| 066 | 07811402 | -31735 | -0,40 | |
| 067 | 07814990 | -28147 | -0,36 | |
| 068 | 07812811 | -30326 | -0,39 | |
| 069 | 07815685 | -27452 | -0,35 | |
| 070 | 07811079 | -32058 | -0,41 | |
| 071 | 07817048 | -26089 | -0,33 | |
| 072 | 07811274 | -31863 | -0,41 | |
| 073 | 07813548 | -29589 | -0,38 | |
| 074 | 07808935 | -34202 | -0,44 | |
| 075 | 07810930 | -32207 | -0,41 | |
| 076 | 07814384 | -28753 | -0,37 | |
| 077 | 07808679 | -34458 | -0,44 | |
| 078 | 07812986 | -30151 | -0,38 | |
| 079 | 07813453 | -29684 | -0,38 | |
| 080 | 07812955 | -30182 | -0,38 | |
| 081 | 07813907 | -29230 | -0,37 | |
| 082 | 07814802 | -28335 | -0,36 | |
| 083 | 07811507 | -31630 | -0,40 | |
| 084 | 07810017 | -33120 | -0,42 | |
| 085 | 07811109 | -32028 | -0,41 | |
| 086 | 07818876 | -24261 | -0,31 | |
| 087 | 07814929 | -28208 | -0,36 | |
| 088 | 07811212 | -31925 | -0,41 | |
| 089 | 07813034 | -30103 | -0,38 | |
| 090 | 07804916 | -38221 | -0,49 | |
| 091 | 07812236 | -30901 | -0,39 | |
| 092 | 07811387 | -31750 | -0,40 | |
| 093 | 07811809 | -31328 | -0,40 | |
| 094 | 07810585 | -32552 | -0,42 | |
| 095 | 07814285 | -28852 | -0,37 | |
| 096 | 07814075 | -29062 | -0,37 | |
| 097 | 07807357 | -35780 | -0,46 | |
| 098 | 07809278 | -33859 | -0,43 | |
| 099 | 07812068 | -31069 | -0,40 | |
| 100 | 07817680 | -25457 | -0,32 | |
| 101 | 07816379 | -26758 | -0,34 | |
| 102 | 07810295 | -32842 | -0,42 | |
| 103 | 07806809 | -36328 | -0,46 | |
| 104 | 07810986 | -32151 | -0,41 | |
| 105 | 07815728 | -27409 | -0,35 | |
| 106 | 07811932 | -31205 | -0,40 | |
| 107 | 07808286 | -34851 | -0,44 | |
| 108 | 07808231 | -34906 | -0,45 | |
| 109 | 07814607 | -28530 | -0,36 | |
| 110 | 07817007 | -26130 | -0,33 | |
| 111 | 07812507 | -30630 | -0,39 | |
| 112 | 07813549 | -29588 | -0,38 | |
| 113 | 07811600 | -31537 | -0,40 | |
| 114 | 07812951 | -30186 | -0,38 | |
| 115 | 07815045 | -28092 | -0,36 | |
| 116 | 07818553 | -24584 | -0,31 | |
| 117 | 07807097 | -36040 | -0,46 | |
| 118 | 07816194 | -26943 | -0,34 | |
| 119 | 07813458 | -29679 | -0,38 | |
| 120 | 07813533 | -29604 | -0,38 | |
| 121 | 07807017 | -36120 | -0,46 | |
| 122 | 07814173 | -28964 | -0,37 | |
| 123 | 07815135 | -28002 | -0,36 | |
| 124 | 07809412 | -33725 | -0,43 | |
| 125 | 07811343 | -31794 | -0,41 | |
| 126 | 07815887 | -27250 | -0,35 | |
| 127 | 07812574 | -30563 | -0,39 | |
| 128 | 07812997 | -30140 | -0,38 | |
| 129 | 07809417 | -33720 | -0,43 | |
| 130 | 07811667 | -31470 | -0,40 | |
| 131 | 07814854 | -28283 | -0,36 | |
| 132 | 07808924 | -34213 | -0,44 | |
| 133 | 07815444 | -27693 | -0,35 | |
| 134 | 07810990 | -32147 | -0,41 | |
| 135 | 07810764 | -32373 | -0,41 | |
| 136 | 07809610 | -33527 | -0,43 | |
| 137 | 07811971 | -31166 | -0,40 | |
| 138 | 07814018 | -29119 | -0,37 | |
| 139 | 07811799 | -31338 | -0,40 | |
| 140 | 07814179 | -28958 | -0,37 | |
| 141 | 07811249 | -31888 | -0,41 | |
| 142 | 07809939 | -33198 | -0,42 | |
| 143 | 07808559 | -34578 | -0,44 | |
| 144 | 07812129 | -31008 | -0,40 | |
| 145 | 07816615 | -26522 | -0,34 | |
| 146 | 07814718 | -28419 | -0,36 | |
| 147 | 07810840 | -32297 | -0,41 | |
| 148 | 07813156 | -29981 | -0,38 | |
| 149 | 07811896 | -31241 | -0,40 | |
| 150 | 07812873 | -30264 | -0,39 | |
| 151 | 07815567 | -27570 | -0,35 | |
| 152 | 07809732 | -33405 | -0,43 | |
| 153 | 07806852 | -36285 | -0,46 | |
| 154 | 07812299 | -30838 | -0,39 | |
| 155 | 07815911 | -27226 | -0,35 | |
| 156 | 07815599 | -27538 | -0,35 | |
| 157 | 07811493 | -31644 | -0,40 | |
| 158 | 07811476 | -31661 | -0,40 | |
| 159 | 07816500 | -26637 | -0,34 | |
| 160 | 07817239 | -25898 | -0,33 | |
| 161 | 07812398 | -30739 | -0,39 | |
| 162 | 07812513 | -30624 | -0,39 | |
| 163 | 07817611 | -25526 | -0,33 | |
| 164 | 07812411 | -30726 | -0,39 | |
| 165 | 07809879 | -33258 | -0,42 | |
| 166 | 07813575 | -29562 | -0,38 | |
| 167 | 07813596 | -29541 | -0,38 | |
| 168 | 07811003 | -32134 | -0,41 | |
| 169 | 07814074 | -29063 | -0,37 | |
| 170 | 07813784 | -29353 | -0,37 | |
| 171 | 07810592 | -32545 | -0,41 | |
| 172 | 07810882 | -32255 | -0,41 | |
| 173 | 07809529 | -33608 | -0,43 | |
| 174 | 07813139 | -29998 | -0,38 | |
| 175 | 07814643 | -28494 | -0,36 | |
| 176 | 07812761 | -30376 | -0,39 | |
| 177 | 07809965 | -33172 | -0,42 | |
| 178 | 07808130 | -35007 | -0,45 | |
| 179 | 07807488 | -35649 | -0,45 | |
| 180 | 07814433 | -28704 | -0,37 | |
| 181 | 07814626 | -28511 | -0,36 | |
| 182 | 07808936 | -34201 | -0,44 | |
| 183 | 07812762 | -30375 | -0,39 | |
| 184 | 07814267 | -28870 | -0,37 | |
| 185 | 07814419 | -28718 | -0,37 | |
| 186 | 07816096 | -27041 | -0,34 | |
| 187 | 07810660 | -32477 | -0,41 | |
| 188 | 07814438 | -28699 | -0,37 | |
| 189 | 07808324 | -34813 | -0,44 | |
| 190 | 07813445 | -29692 | -0,38 | |
| 191 | 07809653 | -33484 | -0,43 | |
| 192 | 07809146 | -33991 | -0,43 | |
| 193 | 07810102 | -33035 | -0,42 | |
| 194 | 07814605 | -28532 | -0,36 | |
| 195 | 07809554 | -33583 | -0,43 | |
| 196 | 07807564 | -35573 | -0,45 | |
| 197 | 07811463 | -31674 | -0,40 | |
| 198 | 07818195 | -24942 | -0,32 | |
| 199 | 07812416 | -30721 | -0,39 | |
| 200 | 07812923 | -30214 | -0,39 | |
| 201 | 07817772 | -25365 | -0,32 | |
| 202 | 07811447 | -31690 | -0,40 | |
| 203 | 07812453 | -30684 | -0,39 | |
| 204 | 07802922 | -40215 | -0,51 | |
| 205 | 07814389 | -28748 | -0,37 | |
| 206 | 07809801 | -33336 | -0,43 | |
| 207 | 07817022 | -26115 | -0,33 | |
| 208 | 07818214 | -24923 | -0,32 | |
| 209 | 07808522 | -34615 | -0,44 | |
| 210 | 07809767 | -33370 | -0,43 | |
| 211 | 07817321 | -25816 | -0,33 | |
| 212 | 07812845 | -30292 | -0,39 | |
| 213 | 07813065 | -30072 | -0,38 | |
| 214 | 07816722 | -26415 | -0,34 | |
| 215 | 07813604 | -29533 | -0,38 | |
| 216 | 07810457 | -32680 | -0,42 | |
| 217 | 07809932 | -33205 | -0,42 | |
| 218 | 07807854 | -35283 | -0,45 | |
| 219 | 07814284 | -28853 | -0,37 | |
| 220 | 07810929 | -32208 | -0,41 | |
| 221 | 07808898 | -34239 | -0,44 | |
| 222 | 07811696 | -31441 | -0,40 | |
| 223 | 07815224 | -27913 | -0,36 | |
| 224 | 07812093 | -31044 | -0,40 | |
| 225 | 07815248 | -27889 | -0,36 | |
| 226 | 07814966 | -28171 | -0,36 | |
| 227 | 07813906 | -29231 | -0,37 | |
| 228 | 07812929 | -30208 | -0,39 | |
| 229 | 07812278 | -30859 | -0,39 | |
| 230 | 07814123 | -29014 | -0,37 | |
| 231 | 07816260 | -26877 | -0,34 | |
| 232 | 07813003 | -30134 | -0,38 | |
| 233 | 07814758 | -28379 | -0,36 | |
| 234 | 07813691 | -29446 | -0,38 | |
| 235 | 07811716 | -31421 | -0,40 | |
| 236 | 07815428 | -27709 | -0,35 | |
| 237 | 07812436 | -30701 | -0,39 | |
| 238 | 07811640 | -31497 | -0,40 | |
| 239 | 07814466 | -28671 | -0,37 | |
| 240 | 07813669 | -29468 | -0,38 | |
| 241 | 07813566 | -29571 | -0,38 | |
| 242 | 07811725 | -31412 | -0,40 | |
| 243 | 07809985 | -33152 | -0,42 | |
| 244 | 07808256 | -34881 | -0,44 | |
| 245 | 07814264 | -28873 | -0,37 | |
| 246 | 07814002 | -29135 | -0,37 | |
| 247 | 07818109 | -25028 | -0,32 | |
| 248 | 07809138 | -33999 | -0,43 | |
| 249 | 07810292 | -32845 | -0,42 | |
| 250 | 07814299 | -28838 | -0,37 | |
| 251 | 07806516 | -36621 | -0,47 | |
| 252 | 07815049 | -28088 | -0,36 | |
| 253 | 07814191 | -28946 | -0,37 | |
| 254 | 07816040 | -27097 | -0,35 | |
| 255 | 07814702 | -28435 | -0,36 |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment