using System;
using System.Collections.Generic;
using System.Text;
using System.Drawing;
using System.Drawing.Imaging;
using System.Drawing.Drawing2D;
namespace CY.Infrastructure
{
///
/// 随机数类
///
public class MathRandom
{
///
/// 返回在min和max之间的随机数(包括min和max)
///
/// 最小数
/// 最大数
/// 随机数
public static int RandomNumber(int min, int max)
{
Random _Random = new Random();
//线程休眠20毫秒
System.Threading.Thread.Sleep(20);
return _Random.Next(min, max + 1);
}
///
/// 返回随机数字+大小写英文//比较 字段后+collate Chinese_PRC_CS_AS_WS
///
/// 长度
///
public static string RandomBytes(int Length)
{
string st = "";
Random _Random = new Random();
//线程休眠20毫秒
System.Threading.Thread.Sleep(20);
string[] chars = new string[62] { "A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "K", "L", "M", "N", "O", "P", "Q", "R", "S", "T", "U", "V", "W", "X", "Y", "Z", "a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k", "l", "m", "n", "o", "p", "q", "r", "s", "t", "u", "v", "w", "x", "y", "z", "0", "1", "2", "3", "4", "5", "6", "7", "8", "9" };
int lan = chars.Length;
Random rd = new Random();
for (int i = 0; i < Length; i++)
{
int t = rd.Next(1, lan);
st += chars[t-1];
}
string str = st;
return str;
}
///
/// 返回随机数字+大小写英文//比较 字段后+collate Chinese_PRC_CS_AS_WS
///
/// 长度
///
public static string RandomStringBig(int Length)
{
string st = "";
Random _Random = new Random();
//线程休眠20毫秒
System.Threading.Thread.Sleep(20);
string[] chars = new string[36] { "A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "K", "L", "M", "N", "O", "P", "Q", "R", "S", "T", "U", "V", "W", "X", "Y", "Z", "0", "1", "2", "3", "4", "5", "6", "7", "8", "9" };
int lan = chars.Length;
Random rd = new Random();
for (int i = 0; i < Length; i++)
{
int t = rd.Next(1, lan);
st += chars[t - 1];
}
string str = st;
return str;
}
///
/// 返回length位数的随机数(0-9)
///
/// 位数
/// 随机数
public static int RandomNumber(int length)
{
Random _Random = new Random();
StringBuilder output = new StringBuilder();
for (int i = 0; i < length; i++)
{
if (i == 0)
{
output.Append(_Random.Next(1, 10).ToString());
}
else
{
output.Append(_Random.Next(0, 10).ToString());
}
}
return int.Parse(output.ToString());
}
///
/// 返回日期的数字形式
///
/// 是否输出日期(年,月,日)部分
/// 是否输出时间(时,分,秒,毫秒)部分
/// 随机数
public static long RandomDateTime(bool _Date, bool _Time)
{
if ((!_Date) && (!_Time))
{
throw new Exception("参数_Date和_Time必须有一个为true");
}
else
{
StringBuilder output = new StringBuilder();
if (_Date)
{
output.Append(DateTime.Now.ToString("yyMMdd"));
}
if (_Time)
{
output.Append(DateTime.Now.Hour.ToString("00"));
output.Append(DateTime.Now.Minute.ToString("00"));
output.Append(DateTime.Now.Second.ToString("00"));
output.Append(DateTime.Now.Millisecond.ToString());
}
//线程休眠20毫秒
System.Threading.Thread.Sleep(20);
return long.Parse(output.ToString());
}
}
#region 验证码
///
/// 生成验证码图片
///
/// Page
/// 验证码的位数
public static void RandomPic(System.Web.UI.Page _Page, int RandomLength)
{
//随机数
int Num = MathRandom.RandomNumber(RandomLength);
_Page.Session["WRandomNum"] = Num;
//创建Bmp位图
Bitmap bitMapImage = new Bitmap(RandomLength * 13 + 16, 24);
Graphics graphicImage = Graphics.FromImage(bitMapImage);
//设置画笔的输出质量
graphicImage.SmoothingMode = SmoothingMode.HighSpeed;
//添加文本字符串
graphicImage.DrawString(Num.ToString(), new Font("黑体", 18, FontStyle.Bold), new SolidBrush(Color.Red), new Point(2, 0));
//设置图像输出的格式
_Page.Response.ContentType = "image/jpeg";
//清空输出数据
_Page.Response.Clear();
//保存数据流
bitMapImage.Save(_Page.Response.OutputStream, ImageFormat.Jpeg);
//释放占用的资源
graphicImage.Dispose();
bitMapImage.Dispose();
}
///
/// 判断输入验证码和图片验证码是否相等,必须先用RandomPic生成验证码图片
///
/// Page
/// 输入的验证码
/// 不相等返回true,相等返回false
public static bool IsRandomWrong(System.Web.UI.Page _Page, string MyNumber)
{
if (_Page.Session["WRandomNum"] != null)
{
if (MyNumber.Trim().Equals(_Page.Session["WRandomNum"].ToString()))
{
//相等
return false;
}
else
{
//不相等
return true;
}
}
else
{
//异常
return false;
}
}
#endregion
}
}