使用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并不 ...
随机推荐
- 神奇的background——绘制图形
相信大家在平时工作中少不了会被要求在某些元添加一些特殊的背景图片,这时候通常就拿起ps就是切切切.不说这种方式麻烦,有ui给你切好的情况已经不错,没有的就有自己动手.还可能有需要切一整张超大图的情况. ...
- JZOJ 3453.【NOIP2013中秋节模拟】连通块(connect)
3453.[NOIP2013中秋节模拟]连通块(connect) Time Limits: 1000 ms Memory Limits: 262144 KB (File IO): input:conn ...
- Typora[MarkDown编辑器]+(PicGo+Github+JsDelivr)[个人图床] ,开启你的高效创作
使用Typora搭配Picgo开启你的高效创作 0x00 一切都要从MarkDown说起 富文本语言的弊端 平常我们最常用的写作工具,无非是富文本编辑器中的代表--微软家的Office Word.这种 ...
- javascript的装饰者模式Decorator
刚开始看这段代码有点绕,现在回过头来看,so easy! Function.prototype.before = function(beforefn){ var _self = this; retur ...
- 自动控制理论的MATLAB仿真实例(一)
拉普拉斯变换及其反变换 Laplace变换及其反变换的定义为:
- 初学react
React特点: 声明式设计:建议使用JSX来描述用户界面;构建组件:单向响应的数据流: JSX:JSX是一种JAVASCRIPT的语法扩展,元素是构成react的最小单位,JSX就是用来声明REAC ...
- gulp常用的插件
参考地址: http://www.cnblogs.com/1wen/p/5421212.html https://my.oschina.net/wolfx/blog/673905 http://www ...
- 深入理解计算机系统 (CS:APP) 缓冲区漏洞实验 – Buffer Lab 解析
原文地址:https://billc.io/2019/05/csapp-cachelab/ 写在前面 这是 CSAPP 官网上的第 4 个实验 buflab,也是学校要求的第三个实验.这个实验比上一个 ...
- Journal of Proteome Research | Quantitative Subcellular Proteomics of the Orbitofrontal Cortex of Schizophrenia Patients (精神分裂症病人眶额叶皮层亚细胞结构的定量蛋白质组学研究)(解读人:王聚)
期刊名:Journal of Proteome Research 发表时间:(2019年10月) IF:3.78 单位: 里约热内卢联邦大学 坎皮纳斯州立大学 坎皮纳斯州立大学神经生物学中心 卡拉博大 ...
- 「 Offer收割机之JVM」:生存还是毁灭
这两天,广州的天气又开始热了起来,又到了小动物交配的季节,啊呸,又到了一个收割 offer 的季节.年底将至,又到了面试的高峰期,JVM 作为Java 程序员面试绕不过的一道坎儿,它又来了,你准备好了 ...