使用RandomString方法后,结果返回相同的随机数解决办法
所遇问题:
在做超市管理系统的登录项目时,在对“随机数的产生”出现一个问题,在产生多个随机数的时候,出现了产生了多个一样的随机数,具体代码如下:
/// <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方法后,结果返回相同的随机数解决办法的更多相关文章
- IOS7.1-7.1.1越狱后无法读取越狱文件的解决办法
IOS7.1-7.1.1越狱后无法读取越狱文件的解决办法 申明: 下面安装PP源的方法已经失效,请不用按照下面的方法操作. 更新最新的方法,在cydia中搜索源 apple fil ...
- 修改计算机名或IP后Oracle10g无法启动服务的解决办法
修改计算机名或IP后Oracle10g无法启动服务的解决办法 遇到的问题,问题产生原因不详.症状为,windows服务中有一项oracle服务启动不了,报出如下错误. Windows 不能在 本地计算 ...
- Android Studio安装后提示No JVM installation found解决办法
Android Studio安装后提示No JVM installation found解决办法 问题描述:Android Studio安装完毕,打开时出现提示"No JVM install ...
- VMware虚拟机中的CentOS7安装Nginx后本机无法访问的解决办法
VMware虚拟机中的CentOS7安装Nginx后本机无法访问的解决办法 在linux上安装nginx 请参考:Linux Centos7 安装 nginx 在虚拟机centos7上安装nginx之 ...
- 分享:Windows2008重启后提示系统恢复选项的解决办法
如题:WINdows2008服务器. 重启后提示系统恢复选项的解决办法 使用windows 2008后,不能启动的问题,重启后出现 修复系统选项 采用下面帖子中的部分命令搞定之. 我自己是直接使用:选 ...
- NGUI发布后UI层看不见的解决办法
NGUI发布后UI层看不见的解决办法 提示信息:You can'tplace widgets on a layer different than the UIPanel that manages th ...
- # vmware异常关机后,虚拟系统无法启动的解决办法
vmware异常关机后,虚拟系统无法启动的解决办法 先使用everything搜索所有后缀为.lck的文件,这些文件全部删除,如果不确定是否可以删除,先把这些文件转移到桌面,等能启动虚拟系统之后再删除 ...
- (tamcat控制台乱码)在idea中运行toncat后控制台出现乱码的情况解决办法(教程附图)。
详细教程: (tamcat控制台乱码)在idea中运行toncat后控制台出现乱码的情况解决办法(教程附图)._IT打工酱的博客-CSDN博客
- 在MVC里面使用Response.Redirect方法后记得返回EmptyResult
在ASP.NET MVC中我们很多时候都会在拦截器和Controller中直接使用Response.Redirect方法做跳转,但是实际上Response.Redirect方法执行后ASP.NET并不 ...
随机推荐
- js获取当前日期是一年中的第几天
js获取当前日期为一年中的第几天 const currentYear = new Date().getFullYear().toString(); // 今天减今年的第一天(xxxx年01月01日) ...
- Levenshtein Distance(编辑距离)算法与使用场景
前提 已经很久没深入研究过算法相关的东西,毕竟日常少用,就算死记硬背也是没有实施场景导致容易淡忘.最近在做一个脱敏数据和明文数据匹配的需求的时候,用到了一个算法叫Levenshtein Distanc ...
- 使用VMware12在CentOS7上部署docker实例
今天下午算是自己搞了一下午才搞出来,对于认为linux是自己死穴的我,现在能搞出来,心里滋味不是一丢丢,哈哈~~~ 算了,废话不多说,直接上图!步骤如下: 1.在安装好VMware12并安装好了cen ...
- Chromium的无锁线程模型C++代码示例
引言 作者:程序员bingo,主要关注客户端架构设计.性能优化.崩溃处理,有多年的Chromium浏览器开发经验. 多线程一直是软件开发中最容易出问题的环节,很多的崩溃.卡死问题都与多线程有关.在常用 ...
- JavaFX之FXML+CSS创建窗体以及透明窗体添加阴影
前言 开通博客园有一段日子了,一直没空也没想好该写点什么.最近正好在做一个桌面程序,初次接触JavaFX,体验下来确实比swing好用不少.索性便记记学习笔记吧,虽然FX好像挺没存在感,没人用的感觉. ...
- 手机app抓包工具,安卓手机adb无线连接
默认手机已经usb调试配置完成 网络必须在同一网络中,每次断开wifi连接,都必须重新重做一次 使用数据线连接电脑 cmd 打开一个命令行 输入 # abd如果没有配置环境变量,请配置或者进入adb文 ...
- [日志分析]Graylog2进阶之获取Nginx来源IP的地理位置信息
如果你们觉得graylog只是负责日志收集的一个管理工具,那就too young too naive .日志收集只是graylog的最最基础的用法,graylog有很多实用的数据清洗和处理的进阶用法. ...
- [BUG]Uncaught TypeError: Illegal invocation at HTMLDivElement.
<div id="clickMe" key="1">点我</div> clickMe.onclick = function (event ...
- 微服务系列之 Consul 注册中心
原文链接:https://mrhelloworld.com/posts/spring/spring-cloud/consul-service-registry/ Netflix Eureka 2.X ...
- Java第一节课考试
1 package kaoshi; import java.util.Scanner; public class ScoreInformation { Scanner input=new Scanne ...