生成不重复的随机数算法
2013-04-15 14:24
288 查看
本文转载http://blog.csdn.net/zhoufoxcn/article/details/5825093#comments
有时我们需要从指定的数值范围内随机产生一个数,利用这个伪随机数去实现自己想要实现的东西。在园子里看了不少好文章和代码,发现zhoufoxcn实现这个算法的思路很好,尤其是第三个方法,
有时我们需要从指定的数值范围内随机产生一个数,利用这个伪随机数去实现自己想要实现的东西。在园子里看了不少好文章和代码,发现zhoufoxcn实现这个算法的思路很好,尤其是第三个方法,
效率较好,便把这一skill记载了下来,虽然我们可以用诸如Random rand = new Random(Guid.NewGuid().GetHashCode()); int value = rand.next(intMin, intMax)代码实现,但程序员的最大
乐趣在于自己动脑,用不同的思路写出不同的算法。
代码如下:
View Code View Code static List<int> GenerateNumber1() { List<int> result =new List<int>(100); Random random =new Random(); int temp =0; while (result.Count <100) { temp = random.Next(1, 34); if (!result.Contains(temp)) { result.Add(temp); } } return result; } static List<int> GenerateNumber2() { List<int> container =new List<int>(33); List<int> result =new List<int>(6); Random random =new Random(); for (int i =1; i <=33; i++) { container.Add(i); } int index =0; int value =0; for (int i =1; i <=6; i++) { index = random.Next(0, container.Count); value = container[index]; result.Add(value); container.RemoveAt(index); } return result; } staticint[] GenerateNumber3() { // 用于存放1到33这33个数 int[] container =newint[33]; //用于保存返回结果 int[] result =newint[6]; Random random =new Random(); for (int i =0; i <33; i++) { container[i] = i +1; } int index =0; int value =0; for (int i =0; i <6; i++) { //从[1,container.Count + 1)中取一个随机值,保证这个值不会超过container的元素个数 index = random.Next(0, container.Length - i); //以随机生成的值作为索引取container中的值 value = container[index]; //将随机取得值的放到结果集合中 result[i] = value; //将刚刚使用到的从容器集合中移到末尾去 container[index] = container[container.Length - i -1]; //将队列对应的值移到队列中 container[container.Length - i -1] = value; } return result; }
相关文章推荐
- 生成不重复随机数的一种算法
- 生成不重复的随机数的高效的算法
- C#生成100个不重复的随机数算法(转)
- 生成不重复随机数的一种算法
- 算法--生成m个指定范围的不重复随机数的三种方法分析(Java实现)
- 对于生成大量的无重复随机数的一个算法!
- 生成不重复的随机数数组,算法优化
- 生成不重复随机数的算法(其一)
- 随机生成不重复的随机数的简单算法
- [Java]不重复随机数生成简易算法
- 谈谈等概率不重复随机数生成算法中的大学问
- C#实现的不重复随机数序列生成算法
- 生成n个从1到M(n <= M)之间的不重复的随机数问题(洗扑克牌算法)
- 生成不重复随机数的一种算法。
- 非重复随机数生成算法
- 生成不重复随机数的算法
- random生成不重复的随机数
- Golang:生成n个从a到b不重复的随机数
- Python根据上下限生成不重复随机数1
- 生成1-100不重复的随机数