C#生成不重复随机数的方法

在使用Random类生成随机数时,我们可能会碰到生成随机数重复的问题。

比如我们要生成6位数字验证码,虽然也是使用Random,但是可能出现111111,999999这样的情况。

这是因为在实例化Random类时,如果随机种子不填写,默认是以时间线作为种子进行伪随机运算,当计算运行速度过快时,导致所有的随机种子都是一个值。

解决的方法也很简单,我们使用Guid的哈希码作为种子值,就不会重复了,代码如下:

 1     public class RandomHelper
 2     {
 3         /// <summary>
 4         ///生成制定位数的随机码(数字)
 5         /// </summary>
 6         /// <param name="length"></param>
 7         /// <returns></returns>
 8         public static string GenerateRandomCode(int length)
 9         {
10             var result = new StringBuilder();
11             for (var i = 0; i < length; i++)
12             {
13                 var r = new Random(Guid.NewGuid().GetHashCode());
14                 result.Append(r.Next(0, 10));
15             }
16             return result.ToString();
17         }
18     }
时间: 2024-08-10 17:11:46

C#生成不重复随机数的方法的相关文章

Java编程:实现双色球彩票生成器,生成不重复随机数

public static void main(String[] args) {  System.out.print("红色的号码为:");  Set<Integer> set=new HashSet<Integer>();  while (true) {   int i=(int)(Math.random()*33+1);   set.add(i);   if (set.size()>=6) {    break;   }  }  for (Object

PHP:产生不重复随机数的方法

来源:http://www.ido321.com/1217.html 无论是Web应用,还是WAP或者移动应用,随机数都有其用武之地.在最近接触的几个小项目中,我也经常需要和随机数或者随机数组打交道,所以,对于PHP如何产生不重复随机数常用的几种方法小结一下(ps:方法1.4.5是我常用的,其余来自网络整理) 方法一: <?php $numbers = range (1,50); //shuffle 将数组顺序随即打乱 shuffle ($numbers); //array_slice 取该数组

mysql生成不重复随机数(unique number generation)

转自:http://blog.csdn.net/dreamer2020/article/details/52049629 问题来源 业务中有时会遇到要生成不重复随机数的情况,例如,新生成一个商品编号.房间编号.或者其他物品编号等.不愿意采用表的自增索引 id,同时又希望新生成的编号是不重复的. 这就需要考验mysql的随机数功能了. Solution mysql的rand函数可以生成一个0到1之间的随机数,进行一定的放大即可得到一个随机数.再通过条件查询来限制新随机数没有在表中出现过.如下所示:

C# Random 生成不重复随机数

Random 类 命名空间:System 表示伪随机数生成器,一种能够产生满足某些随机性统计要求的数字序列的设备. 伪随机数是以相同的概率从一组有限的数字中选取的.所选数字并不具有完全的随机性,因为它们是用一种确定的数学算法选择的,但是从实用的角度而言,其随机程度已足够了. 伪随机数的生成是从种子值开始.如果反复使用同一个种子,就会生成相同的数字系列.产生不同序列的一种方法是使种子值与时间相关,从而对于 Random 的每个新实例,都会产生不同的系列.默认情况下,Random 类的无参数构造函数

生成不重复随机数函数

// 生成随机数函数 function createRandom(num,from,to) { var arr=[]; // 随机数数组 var json={}; // 标记json对象 while(arr.length<num) { // 产生单个随机数 var ranNum=Math.round(Math.random()*(to-from))+from; // 通过判断json对象的索引值是否存在 来标记 是否重复 if(!json[ranNum]) { json[ranNum]=1; a

如何更快的生成不重复随机数思路

最新接到一个需求,由于运营需要我们需要在原用户的信息上加入一个邀请码用于推广. 略为思考一下,我们可以将需要拆分为一下几点: 1.邀请码为数字和字母组成6位的随机数 2.随机数不能重复 3.将数据与用户关联,插入数据库 -------------------------------------------------------------------- 解决思路: 生成随机数不表,大家应该都会 不重复如何解决呢,有同学想到先到数据库中做一次查询,如果没有该随机数再进行插入,如果有重新生成,做一

生成特定分布随机数的方法

生成随机数是程序设计里常见的需求.一般的编程语言都会自带一个随机数生成函数,用于生成服从均匀分布的随机数.不过有时需要生成服从其它分布的随机数,例如高斯分布或指数分布等.有些编程语言已经有比较完善的实现,例如Python的NumPy.这篇文章介绍如何通过均匀分布随机数生成函数生成符合特定概率分布的随机数,主要介绍Inverse Ttransform和Acceptance-Rejection两种基础算法以及一些相关的衍生方法.下文我们均假设已经拥有一个可以生成0到1之间均匀分布的随机数生成函数,关

java中生成不重复随机数(据HashSet特性)

import java.util.HashSet; public class RandomNumbers { /** * 随机指定范围内N个不重复的数 利用HashSet的特征,只能存放不同的值 * * @param min * 指定范围最小值 * @param max * 指定范围最大值 * @param n * 随机数个数 * @param HashSet<Integer> * set 随机数结果集 */ public static void randomSet(int min, int

JS生成不重复随机数

说明 我们可以用Math.random()的方法轻松的生成 一个随机的数字,但是这个数字可能是重复的.有时候,我们需要一个不重复的随机数,可以用很多的方法来实现这个要求,以下方法是效率最高的. 解释 不重复的随机数往往是规定范围的,我们先声明一个在这个范围之内的数组,然后用sort方法对数组进行排序.而排序的方法里使用一个随机数,这个随机数使这个排序方法是不确定的.因此可以得到一个不重复的随机数组. 代码 1 <!DOCTYPE html> 2 <html> 3 <head&