Dot Net Perls
Top 37 C# Example Pages...

[",rywsssyr.XZCEST~~}T~~YF7566666885FXBaCC*B(BCE`CS}T~~}T~~","Shuffle."," We can shuffle an array, randomly reordering all elements, with results that are mathematically correct. Some solutions exist but do not give high-quality random results.","Example."," Here we see an approach to shuffling a string array that is not the classic, optimized Fisher-Yates shuffle. But this approach is mathematically random. It will not cause strange biases in your code. ","And: ","This is true because it performs all the operations together, rather than one after another.","Fisher-Yates Shuffle ","fisher-yates-shuffle","ins","class","adsbygoogle","data-ad-client","ca-pub-4712093147740724","data-ad-slot","6227126509","data-ad-format","auto","ins","class","adsbygoogle","data-ad-client","ca-pub-4712093147740724","data-ad-slot","6227126509","data-ad-format","auto","Based on:"," .NET 4.6\n\n","C# program that uses random shuffle algorithm","\n\nusing System;\nusing System.Collections.Generic;\nusing System.Linq;\n\nclass Program\n{\n static ","Random"," _random = new Random();\n\n static string[] ","RandomizeStrings","(string[] arr)\n {\n List<KeyValuePair<int, string>> list =\n new List<KeyValuePair<int, string>>();","\n // Add all strings from array.\n // ... Add new random int each time.\n ","foreach (string s in arr)\n {\n list.Add(new KeyValuePair<int, string>(_random.Next(), s));\n }","\n // Sort the list by the random number.\n ","var sorted = from item in list\n orderby item.Key\n select item;","\n // Allocate new string array.\n ","string[] result = new string[arr.Length];","\n // Copy values to array.\n ","int index = 0;\n foreach (KeyValuePair<int, string> pair in sorted)\n {\n result[index] = pair.Value;\n index++;\n }","\n // Return copied array.\n ","return result;\n }\n\n static void Main()\n {\n string[] arr = new string[]\n {\n ","\"cat\"",",\n ","\"animal\"",",\n ","\"abacus\"",",\n ","\"framework\"","\n };\n string[] shuffle = ","RandomizeStrings","(arr);\n foreach (string s in shuffle)\n {\n Console.WriteLine(s);\n }\n }\n}\n\n","Output","\n\nabacus\nframework\ncat\nanimal","The method here"," uses the KeyValuePair<T, V> data structure that is included in System.Collections.Generic. It allocates another array containing the string[] elements and pairs them with a random number. Finally, it sorts. ","KeyValuePair ","keyvaluepair","This method"," is equally random as generating a random set of integers one-by-one. If you only randomize one element at a time, and then randomize the rest separately, you will get biases. ","Note: ","We randomize the entire array all at once, which will result in consistently random results.","Note 2: ","I decided to use this approach instead of the optimized algorithms because this code wasn't on a hot path in my program.","Random numbers."," It stores a Random number generator as a static field, which means you can call the RandomizeStrings method repeatedly and will get good results. More information on Random is available. ","Random ","random","Discussion."," This article previously showed a naive method that used OrderBy in LINQ, but was not mathematically sound. The current method is mathematically sound, as noted in Wikipedia. See \"Comparison with other shuffling algorithms.\" ","orderby ","orderby","Info: ","Wikipedia notes that this approach is sometimes faster in high-level languages. It is unlikely to be faster in the C# language.","Fisher-Yates shuffle: Wikipedia ","http://en.wikipedia.org/wiki/Fisher-Yates_shuffle","Summary."," We used a mathematically sound approach for shuffling an array. This method is not optimally fast, but for my use this wasn't important. If you need performance, use an implementation of Fisher-Yates. ","Review: ","We saw an example of using the LINQ query syntax with a List of KeyValuePair structs.","ins","class","adsbygoogle","data-ad-client","ca-pub-4712093147740724","data-ad-slot","3679700504","data-ad-format","link","ins","class","adsbygoogle","data-ad-client","ca-pub-4712093147740724","data-ad-slot","6227126509","data-ad-format","auto","url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAANYAAAA3CAMAAABHJUQ7AAAAMFBMVEX////7/f7y/f+38v//6en/1dX/tbX/xcXl+v/U9//G9f//qKiq8P+U7P+e7v//lJQSDb6dAAAEaklEQVR4Xt2Z27KiMBBF050bN/X//3aQiBvZoeMZHoYz+8myKYtFeuWCDomfcY30n3EXTXh8xtnp7p+5KlbcYYXGYE1rCpZeFCvtsBpdOPiSFe6qXfjYJTWwlgBt+AVqteXSfgnQ/MXVSl/Jpd2Svu/6oUQvrVZ24zdy6RrXlUHrr4mFMcosV2Pc+jnXxArAioZcRj/qldUaPwjtSEzPi0RnMFWpFrcJIea0qpvyZ1GEfn77laieU8tZcm2IQ17ZRVXFKurzi1VZZAzLWEu56G13XN0VPO3ktNvZ628lvUP6W4mHWkBhuRgrJDA4ETGLQusHCERFSgvDafwknvaMNXRbrAEIhDqwWo7lYiw8+tAsLsyMheF8Um3Jq90hM5ZXh3QvhLtDbq90rJYpV+3G7KKNlYo2i5nCToO0YA0OkZVBifRWUYvkOoFFHVoFL/bBbzgNtQrWpIZctlok11ksfWGllOKcMCfDrtdw7SBKALpiddX5gUFZLVMuaqK43LlRLB22T6xgQS5Wa8XqDbkMtYjSwsrhxaNyUFzXNEcZ0fUL+o6C1HK6YEGuDYU21aKeJCwwoaAq9aKUHQgNF83m1HN0UcHy1so12GoBMx1hZdnte7mI/WLXMRY8qn9JU9dCBayaXJOhli1XvTu103pxhlqwXBurIpeQWndgcdMJmpLVYs42lhxhPY8sNSzMhcn4eVILWDRF0BRCallyHeCWNuPi8AywQsRed4dFcrFaHlgkV0stksvAkjaW908sLVv68cFJhnGkFrBYLlstastjLEFBD7A8sIzdU02uulo7LIVchlqP9M5IpIyl2j3dKfaohSVExVgsV9gYr1Usd3/LBbUmqHWcaGAtFs/xQ3+ANc1Y5XXA2MJiufLGeJ2pgFWRC2oNEOY4+RjrSdXCWmtxA7LsC2HRoVxQq2BNwCK5DLU4LBe1+3T/Civtl2rCIrnkozOKWpjlSK6KWlZCC+tuN2FRawQFY9XlglqMxXKxWtnEiuexeAlhLJZrq5bTwQOrJtdeLdg8pm1ILsIqE6EvC66FxSXG4pVlhKkL1gQslmt6q9XZG6XMcrE+iJzDYrneH2TFmqlWLJbr/UH2agk9NiI4jZVbWLDw47F2dSzMf/5IrfHgsUULCzFmQlmVQS0kPiOw6VCr9wXr7hBsBBFWKxvn13NYur3ZGGJODyRL+0/RdXJ63raQXIipFst1HiuaSwjLhQh2TrhxlqupFst1AgsLl43FcsE9wiK5EG+oRXKdwPpiuIIhF3ZOwLLk6ltqASH/Pdb9NVzmoh8suXAoYSyWC8X0CtuSUwmwrKudVIoz07C+ognb7hpzCKmOJTgY4bzfa+dvVSzxc96d6P5BQiyPKYZCEmLkR8TLmqis/8L7OeoQ3slfO5m8NjNArSuHNbVzx6HkwuG38XYUr9IuHajF+cVqpZ+p5f9PtW7/pVrdL1EL5/2vgvP+tTP+TK3pd6gVfqaWXlwtfk1jhl/TXDsxlcQvsXxJ75A/ZMHNEnLfXgIAAAAASUVORK5CYII=)","url(data:image/jpeg;base64,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)","url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAANIAAABFCAMAAAAIJEiLAAAAGFBMVEUAru+g2Pf///8xt/BpxvPS6/vp9f0TtPCISbH1AAADCklEQVR4Xu2bwY7CMAxEPWM7/P8fr9baaNSG0lIQK6q8U2vhxk9ODD1gJBE3uwS3AEkjwy5EkCajqzgZ7GLAwi5G2M2uxceEJpPJZDKZTCYTzzCBsH8kAMCeA0OOJykNkLDP4iZAMu05UjkyYnMZveyEX3QJf9iVJN6npIC6FNTtWfSI/aeRfLsSpCAnup0nyF4nPqwkAwwV5ctKrS9G4qNKPtT/+nEK9t44/0EJ2mUiFTyr1EoEdSGlQGYi+t0vpRSFS6k+CZgwh5K1FJCJRkrJ7zYk7kQdiCeUUIskCSlFY8EWmiJCpy89WaRLiEruoLEjJfRNLxTesxRjdpB0r4ueB4p4rJTrQj0poHXuKG0UGsOcapXnh5WcJEDSajnNQWQJ+LaSUBG5Dsooc6EUW3W2laqziMNKlqVElFJ/ZLoavjkeCrhBn0OPRbm11VdeSknjZXfnPa0EsjUyuhLU5bp8rFQRnfqm5HIKXayVsmeLjfZBzT2mFCyslLSUtvUjJSwqVV810BRbKSkslBirOuHHvyb+Th/qLvtSUewqtVWl6rB6V7EYlRReo4TnycWaySqRgntKeU/JTNGm2FElzYfzSlFr9p7FaSVdKMozSvmykpPE+5TaQqmbfXbjWWoy6XCKUxtPUXxUqWmBrqTSTyvFYuItYu3cxItM2DE4KLk2zxmloLwxDnFQOUpaUwnjC8dZpdh+gMrZVjL2ZL2gVreaV4aUtCHF+GD1lvQTStCrE5kIiwio41nh3yjivpKqBiA5/IWS42+8ODLDWeC8Uq0lIGPFNpU82VFMAbnrYO3+HlJ393GSGJUMg1KRO0qDU7oVUJ5yNDfExhnzPKwUoxJWr3HMUAL2lAq0ITNaTxveanPndUmxtBeJACL8bvRQri9DgNIetcm1HYdp+w3kOMmgkHBW8BsInbhHX0Ge39EkGeRDI0DD4YucfLgTLOD2VU7QTRkNSgj7JkAogMHIIsK+DSwEZPR+JpPJZDKZTG7XEwq7GG6wi4Er/n+J7VJO0Wgk4Vf5L6CD5A+G4BPe8JfzjgAAAABJRU5ErkJggg==)"]

["url(data:image/jpeg;base64,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)","url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAJgAAABZCAMAAAD1qB0CAAAAGFBMVEX///+vr6/Nzc1kZGSNjY3k5OQxMTEAAABgpIToAAADeUlEQVR4Xu1Z23YcIQxbX/n/P273lMYJRSilM4d5qB5DwAIJe7y8NqEi+noeIttPpD6S1xvyMGLZOvKGACqyu19pHTccmfwyyR41L2JGJuwunbEz224jVlv2bWJ4/j4USHGlx454JO66la3g/3Ytr82w0ZAU0hGUWc2+x2ItpolTuZpu5pT/vndzfpSvM3BkMakbcQSGlPTDpTmBksRi9wMoedxiAZQ8bjFFSnqd4xFIKTm3mBwnFnPvxek0ZnOJ83U6jcmOxRTUUj5JKbFBMu34Tdi18JVBSJ8LG7cQz7cW8ir0SfVnhEFJbQv4JABMwlEUmkU1Fx20Ex2UlIZR4SsAcqJWCa5th8Gt4jQWpSxEjLNg42azcUEiYGJ1J62jdaQV/EuOMTMcoI2wfp1cVFWMtwkyH4/1PJEYhLdBBxsJhH2OolkDa2KAL0uvNicWU0ktZh2MLVd21AKzukG8IlDtsqmuiAk4Cf8uMVlZGIfAMfogTCKXERM8tCDmaBIpHNSLupB6qaXOhwRuBnqR98K4SkNiiebYdxsGZ8TIdw2Y6JsW4140EhsO+lTJwALggsZPFLsf6JxcAKJUsk5Htog5UB9YjKY7fqKcWAlGBCAWo5d2h1hyAbjF+IlyYuOY86zJLcZPFBNLsLL+lQC8YeEFhKcLGcNzAXhPzG83/zLxCr+RXoNITgqIL+LYoOReBc+9gmWLOLUqEGDfYryAkGzhWIB7LRYL74eZ6WUW4+mVe5/Hu99izvZ1v8UE0y4lOfwKi/GCpZA2FeAmi/FRLsC+xfjt5mF4+8AtRkLvbAtflssspmA2HlQNLEBuZxV+u2vQkRSmSADjku9X8EgoZAAllBLjkvM8ZVjIJA81VEojJxYVAAopQIiZZgLX47888BcXbjBrBbIeI2b0fVYJL/QbqaKjlLcIoeK+INYvUKgL8ErLoO+znJi2AezMCzJYrJA1pInfLLCUtVMcsgQZEYsNprxHVSZXFS7rLGA63lvBZGox08lOU8ltLwNAZulokcjP3AO3gFLUypMYVrwGhH8cuC/X6BHNg1Rw+Vgxnb/ViZUrR0R/a2OI+i/2kahvvI6j+oHD4N/n53H+pX+/BTxvsfbfYhst4KPQznufpddnwU97n/bgT81i9lQl83nZ9XnpItSH78x4ACnLNoPJcQ0B9HiWALhAzR98s0wlubKPewAAAABJRU5ErkJggg==)","url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAG4AAACCAgMAAADasxWRAAAADFBMVEX/6Nn///+VlZX29va5ksB5AAAASElEQVR4AWPACZj/f0DmjkqOSjKtQgcLyJccZiEE9SOmP8mXHEaBMBoIo4EwGggryJccvvVKKAogTnJUclRyVHLklgmjkqOSAALWyrsxEHLDAAAAAElFTkSuQmCC)","url(data:image/jpeg;base64,/9j/2wBDAAcHBwcHCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQn/wQARCABiAO4DACIAAREAAhEA/8QATQABAAIDAQEBAAAAAAAAAAAAAAECAwQGBQcIEAEAAgEEAAQEAwYHAAAAAAAAAQIDBBESIQUxQVEGYZLTExRCFnGBotLUIjIzUlNi4v/aAAwDAAABAAIAAD8A/SIAAAAAAI3BIjdHIFhXkjkGy4pyOQnZcV5I5CNlxXkncEiNzcEiBG4kQG4kQk3ABIAAAAAACETIgmWObovbZrXuMlY3Z5urORpzdSboXijbnIj8VpzdXmruvFG9GRaMjRi60XN0zRvc2Ocu0y1ubSyZ+Mz36m5XFu9aM8e60Z493N31se7HXxCN/NHJk/LT7OrjNHuvF3OY9bHu9LFm5QibMdsEw9WLLbtWl92as7sc2YJjZkEByVWECYsJSgZIlCQGQAAFZlKsqTYN1JlEyiUckMOS0xDRvkmPZu3hoZKHJs4tvVhnLb5KTlt8kzRSaq8mz0Tlt7Qj8W3yY7KTKd1oiGxGa3yT+Nb5NXcmyd2TjDYtqLRHo8nU6nz7Z8lunP6/LMRPaJlnxYo3aWq1/GZ7efXxKd/8zw9fqZ3nt5NNTO/m15s9CuKNn03R67nMduq0mblEdvl3h2oneO3eaDLvFe0xLS1OKNnX47t2kvJwX6h6WOUS8e8NsRCRrgAJSgZayLCEs8IEJQSIRKUS17SljlVeVZU3Qx3ad4bV5al7QjdmoxTDHeq03hjteF4lniWvdgmVsl4as5IWhsVZd0TLBOSEfiQsyxCck9S5nxK3VnQZLxtLmfEb9SrLZxebhdffuXi1ybS9PxC/cufnJtLBMdt+JjZ1vh+o2mO30Lw3UxtXt8l0WaYmO3e+FZp/w9phrZ4iYfT9Lk6h7WKeoctoLzMQ6bBPUJ2eFmjaZb8JRXySbNYAFUgllqCQZ4QISEiqJWQxWhKswpLLsxX8mPYama/GHjZtTFZntu6y/GJcZr9XNJntTiy1evfW192G2tr7uLzeKcZntpz4t/2XiGesbu0yauJ9WvOp+blI8Ri/6mamr5eq0N2lXRfmfmn8x83iUyz7s8XlfZmiHpXz9PB1+TeJblrzs8vU72iSYZYhxfiEzMy52/Ld1urwcpnp49tJO/kpNVu1dDE7w+g+FR1VyOk00xMdO38OpNeKNlbb7du30E9Q6rTTvEOT0Xo6nSz1C8VeXqIerXyWRTyWJq89AkU4iEiWWsIAGQAAEJETAhS8dMiJhXiPA19JmJfPfFaXjk+r5tPS8TE7uf1ng2nzRO85P4Wr/SjivEvhGuveky8G+qvWfN9s1fwlocm+99RH7rY/svBy/A/h1p/1NX9eL+3OLPXLEPm+LW33jt7em1Nrbduop8D+HVnrJq/rxf2709P8IaCm22TU/wAb4vsnFt01FPV4mnvNoh6FYnZ02D4Z01Ntp1H1Y/st6vw9h28tR/L9teIZvzOL3cXbdq5Kcnf/ALN4/wDbqP5fto/Zek+mf6sf207JjV4Y9XzHJpufowRoO/J9Xj4Tx+2X68TPT4Vw+s5Prx/bUmCddi93zDT6Cd46dHo9JNduna0+GsNP1T9Vftt7H4Jip+qfq/8AKOLDfW0nyeHpcE9dOj09NtmWmgx08pls1xVp5SvENHLm5r1jpdEQlOzXQJEbAAkAAAAAAAAVsw2jf0bADVjHjtPdKT++tWSNPg/48f0V/pZgFIx44/RT6arxEewAAAAAAAAAAAAAAAAAAA//2Q==)"]