所遇问题:

在做超市管理系统的登录项目时,在对“随机数的产生”出现一个问题,在产生多个随机数的时候,出现了产生了多个一样的随机数,具体代码如下:

   
     /// <summary>
/// 生成随机字符串
/// </summary>
/// <param name="length">字符串的长度</param>
/// <returns></returns>
public string RandomString(int length)
{
// 创建一个StringBuilder对象存储返回的验证码
StringBuilder sb = new StringBuilder();
//使用for循环把单个字符填充进StringBuilder对象里面变成自定义长度的字符串
for (int i = ; i < length; i++)
{
Random random = new Random();
//随机选择里面其中的一种字符生成
switch (random.Next(,))
{
case :
//调用生成生成随机数字的方法
sb.Append(Num());
break;
case :
//调用生成生成随机小写字母的方法
sb.Append(Small());
break;
case :
//调用生成生成随机大写字母的方法
sb.Append(Big());
break;
}
}
return sb.ToString();
}


调用的方法:

     /// <summary>
/// 生成单个随机数字
/// </summary>
private int Num()
{
Random random = new Random();
int num = random.Next(,);
return num;
} /// <summary>
/// 生成单个大写随机字母
/// </summary>
private string Big()
{
//A-Z的 ASCII值为65-90
Random random = new Random();
int num = random.Next(, );
string abc = Convert.ToChar(num).ToString();
return abc;
} /// <summary>
/// 生成单个小写随机字母
/// </summary>
private string Small()
{
//a-z的 ASCII值为97-122
Random random = new Random();
int num = random.Next(, );
string abc = Convert.ToChar(num).ToString();
return abc;
}

使用RandomString方法后,结果返回了相同的随机数,经过找资料后,给出的解释:

创建随机数的一个实例,并在每次需要随机数时使用它。通常,如果你有多个随机数实例,并通过代码在同一迭代中调用它们,那么最终将从每个实例中获得相同的数字。

解决办法:

使用Random时加上System.Guid.NewGuid().GetHashCode(),即:Random random = new Random(System.Guid.NewGuid().GetHashCode()); 具体代码如下:

     /// <summary>
/// 生成单个随机数字
/// </summary>
private int Num()
{
Random random = new Random(System.Guid.NewGuid().GetHashCode());
int num = random.Next(,);
return num;
} /// <summary>
/// 生成单个大写随机字母
/// </summary>
private string Big()
{
//A-Z的 ASCII值为65-90
Random random = new Random(System.Guid.NewGuid().GetHashCode());
int num = random.Next(, );
string abc = Convert.ToChar(num).ToString();
return abc;
} /// <summary>
/// 生成单个小写随机字母
/// </summary>
private string Small()
{
//a-z的 ASCII值为97-122
Random random = new Random(System.Guid.NewGuid().GetHashCode());
int num = random.Next(, );
string abc = Convert.ToChar(num).ToString();
return abc;
}

使用RandomString方法后,结果返回相同的随机数解决办法的更多相关文章

  1. IOS7.1-7.1.1越狱后无法读取越狱文件的解决办法

    IOS7.1-7.1.1越狱后无法读取越狱文件的解决办法 申明:      下面安装PP源的方法已经失效,请不用按照下面的方法操作.      更新最新的方法,在cydia中搜索源 apple fil ...

  2. 修改计算机名或IP后Oracle10g无法启动服务的解决办法

    修改计算机名或IP后Oracle10g无法启动服务的解决办法 遇到的问题,问题产生原因不详.症状为,windows服务中有一项oracle服务启动不了,报出如下错误. Windows 不能在 本地计算 ...

  3. Android Studio安装后提示No JVM installation found解决办法

    Android Studio安装后提示No JVM installation found解决办法 问题描述:Android Studio安装完毕,打开时出现提示"No JVM install ...

  4. VMware虚拟机中的CentOS7安装Nginx后本机无法访问的解决办法

    VMware虚拟机中的CentOS7安装Nginx后本机无法访问的解决办法 在linux上安装nginx 请参考:Linux Centos7 安装 nginx 在虚拟机centos7上安装nginx之 ...

  5. 分享:Windows2008重启后提示系统恢复选项的解决办法

    如题:WINdows2008服务器. 重启后提示系统恢复选项的解决办法 使用windows 2008后,不能启动的问题,重启后出现 修复系统选项 采用下面帖子中的部分命令搞定之. 我自己是直接使用:选 ...

  6. NGUI发布后UI层看不见的解决办法

    NGUI发布后UI层看不见的解决办法 提示信息:You can'tplace widgets on a layer different than the UIPanel that manages th ...

  7. # vmware异常关机后,虚拟系统无法启动的解决办法

    vmware异常关机后,虚拟系统无法启动的解决办法 先使用everything搜索所有后缀为.lck的文件,这些文件全部删除,如果不确定是否可以删除,先把这些文件转移到桌面,等能启动虚拟系统之后再删除 ...

  8. (tamcat控制台乱码)在idea中运行toncat后控制台出现乱码的情况解决办法(教程附图)。

    详细教程: (tamcat控制台乱码)在idea中运行toncat后控制台出现乱码的情况解决办法(教程附图)._IT打工酱的博客-CSDN博客

  9. 在MVC里面使用Response.Redirect方法后记得返回EmptyResult

    在ASP.NET MVC中我们很多时候都会在拦截器和Controller中直接使用Response.Redirect方法做跳转,但是实际上Response.Redirect方法执行后ASP.NET并不 ...

随机推荐

  1. 【布局】圣杯布局&双飞翼布局

    背景 随着前端技术的发展推进,web端的布局方式已基本成熟,那么在网站布局方式中,三列布局最为常用,布局方式也有很多,渐渐的开发者们开始从效率的角度优化自己的代码"如果三排布局能将中间的模块 ...

  2. 响应式导航菜单(css+js)

    1.响应式导航菜单 先来看下效果图把: 当视口大于640px的时候,导航条会显示在外,当视口小于768px的时候,导航菜单需要隐藏起来!代码如下: <!doctype html> < ...

  3. https信任库采坑记

    最近在客户现场遇到一个棘手的http问题,现象很直接,访问某https的时候报错: javax.net.ssl.SSLPeerUnverifiedException: peer not authent ...

  4. 关于Spring和SpringMVC的总结

    1.Spring中AOP的应用场景.AOP原理.好处? 答:AOP:Aspect Oriented Programming面向切面编程:用来封装横切关注点,具体可以在下面场景中使用: Authenti ...

  5. JavaWeb中登录验证码生成

    1.页面代码 <html> <head> <title>Title</title> <script type="text/javascr ...

  6. XCTF---easyjava的WriteUp

    一.题目来源     题目来源:XCTF题库安卓区easyjava     题目下载链接:下载地址 二.解题过程     1.将该apk安装进夜神模拟器中,发现有一个输入框和一个按钮,随便输入信息,点 ...

  7. 【GTS-Fail】GtsSecurityHostTestCases#testNoExemptionsForSocketsBetweenCoreAndVendorBan

    [GTS-Fail]GtsSecurityHostTestCases#testNoExemptionsForSocketsBetweenCoreAndVendorBan [问题描述] Gts-7.0- ...

  8. Vue2.0 【第二季】第5节 Template制作模板

    目录 Vue2.0 [第二季]第5节 Template制作模板 第5节 Template制作模板 一.直接写在选项里的模板 二.写在template标签里的模板 三.写在script标签里的模板 Vu ...

  9. tomcat Http11NioProtocol如何解析http请求及如何解决TCP拆包粘包

    前言 tomcat是常用的Web 应用服务器,目前国内有很多文章讲解了tomcat架构,请求流程等,但是没有如何解析http请求及如何解决TCP粘包拆包,所以这篇文章的目的就是介绍这块内容,一下内容完 ...

  10. 苹果笔记本 安装 ubuntu 默认没有无线网卡 的 解决方案

    sudo apt-get update sudo apt-get install bcmwl-kernel-source