基于RNGCryptoServiceProvider的洗牌算法
Posted 煌煌星汉
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了基于RNGCryptoServiceProvider的洗牌算法相关的知识,希望对你有一定的参考价值。
将1到100这个100个自然数, 随机放入一个长度为100的int数组中, 并且不能重复:
class Program { static void Main(string[] args) { int[] num = new int[100]; int index01; int index02; int tmp; for (int i=0; i<100; i++) { num[i] = i+1; } for(int i=0; i<100; i++) { index01 = GenerateRandom()%100; do { index02 = GenerateRandom() % 100; } while (index01 == index02); tmp = num[index01]; num[index01] = num[index02]; num[index02] = tmp; } for (int i = 0; i < 100; i++) { Console.WriteLine(num[i]); } Console.ReadKey(); } private static int GenerateRandom() { int seed = GetRandomSeed(); return new Random(seed).Next(); } /// <summary> /// 生成随机种子 /// </summary> /// <returns></returns> private static int GetRandomSeed() { byte[] bytes = new byte[4]; System.Security.Cryptography.RNGCryptoServiceProvider rng = new System.Security.Cryptography.RNGCryptoServiceProvider(); rng.GetBytes(bytes); return BitConverter.ToInt32(bytes, 0); } }
以上是关于基于RNGCryptoServiceProvider的洗牌算法的主要内容,如果未能解决你的问题,请参考以下文章
推荐算法简介:基于用户的协同过滤基于物品的协同过滤基于内容的推荐