c# Random Class usage
Random Usage
sometimes, we hope to generate some random infor to manipulate our data structor. we can use random class to achieve this goal.
the refer link in MSDN,Random
example source
using System;
using System.Text;
using System.Windows.Media;
namespace MVVM_Template_Project.Auxiliary.Helpers
{
/// <summary>
/// This class should provide you with plenty of random method to get random things.
/// Benefit: no need to create a `Random rand = new Randow();` everywhere in your code.
/// </summary>
public static class Random_Helper
{
private static readonly Random RandomSeed = new Random();
/// <summary>
/// Generates a random string with the given length
/// </summary>
/// <param name="size">Size of the string</param>
/// <param name="lowerCase">If true, generate lowercase string</param>
/// <returns>Random string</returns>
public static string RandomString(int size, bool lowerCase)
{
// StringBuilder is faster than using strings (+=)
var randStr = new StringBuilder(size);
// Ascii start position (65 = A / 97 = a)
var start = (lowerCase) ? 97 : 65;
// Add random chars
for (var i = 0; i < size; i++)
randStr.Append((char) (26*RandomSeed.NextDouble() + start));
return randStr.ToString();
}
/// <summary>
/// Number between min (inclusive) and max (exclusive)
/// </summary>
/// <param name="min">Inclusive</param>
/// <param name="max">Exclusive</param>
/// <returns></returns>
public static int RandomInt(int min, int max)
{
return RandomSeed.Next(min, max);
}
/// <summary>
/// Double between 0 (inclusive) and 1 (exclusive)
/// </summary>
public static double RandomDouble()
{
return RandomSeed.NextDouble();
}
/// <summary>
/// Return a random number between min (inc) and max (exc), with 'digits'
/// numbers after the decimal point.
/// </summary>
/// <param name="min">Lowest number (inclusive)</param>
/// <param name="max">Highest number (exclusive)</param>
/// <param name="digits">Precision after decimal point</param>
public static double RandomNumber(int min, int max, int digits)
{
var range = max-min;
var str_format = "{0:F"+digits+"}";
// To avoid having to get an int and then add a random double ...
var rand_dou = Double.Parse(string.Format(str_format, min + range * RandomSeed.NextDouble()));
// If for some random reason the rounding of the double is equal to max, we just call
// the method again and return the value.
// This can *theoretically* get into an infinite loop if it happens every time, but
// this scenario is highly unlikely :0
return (rand_dou<max) ? rand_dou : RandomNumber(min,max, digits) ;
/*
* Another option will be:
* return Math.Round(RandomSeed.Next(min, max - 1) + RandomSeed.NextDouble(), digits);
*/
}
/// <summary>
/// Random true/false.
/// </summary>
public static bool RandomBool()
{
return (RandomSeed.NextDouble() > 0.5);
}
/// <summary>
/// Random phone nmuber. Starts with 1234 and has extra 6 random digts.
/// </summary>
public static string RandomPhone()
{
string mold = "1234-{0}-{1}";
return string.Format(mold, RandomInt(0, 1000).ToString().PadLeft(3, '0'), RandomInt(0, 1000).ToString().PadLeft(3, '0'));
}
/// <summary>
/// Will return a random date between 1/1/1900 and Now.
/// </summary>
public static DateTime RandomDate()
{
return RandomDate(new DateTime(1900, 1, 1), DateTime.Now);
}
/// <summary>
/// Will return a random date between given dates.
/// </summary>
/// <param name="from">lower bound date</param>
/// <param name="to">higher bound date</param>
/// <returns></returns>
public static DateTime RandomDate(DateTime from, DateTime to)
{
var range = new TimeSpan(to.Ticks - from.Ticks);
return from + new TimeSpan((long) (range.Ticks*RandomSeed.NextDouble()));
}
/// <summary>
/// Random color (RGB)
/// </summary>
public static Color RandomColor()
{
return Color.FromRgb((byte) RandomSeed.Next(255), (byte) RandomSeed.Next(255), (byte) RandomSeed.Next(255));
}
/// <summary>
/// Random weather. Note that valid values are 0-5 (inclusive), and so the
/// default might happen.
/// </summary>
/// <returns></returns>
public static string RandomWeather()
{
int rand = RandomInt(0, 6);
string weather;
switch (rand)
{
case 0:
weather = "Gloomy day";
break;
case 1:
weather = "Rainy day";
break;
case 2:
weather = "Foggy day";
break;
case 3:
weather = "Sunny day";
break;
case 4:
weather = "Rainy with a chance of meatballs";
break;
default:
weather = "I'm stuck in my cubicle coding. No weather for you! Come back, 1 YEAR!";
break;
}
return weather;
}
#region Random names
private static readonly string[] ListOfMaleFirstNames =
{
"Verna", "Almeta",
"Melvina", "Digna", "Dortha", "Ione", "Sonya", "Shiela", "Shonna",
"Tania", "Susanne", "Ellie", "Felice", "Caitlyn", "Bethel", "Kamilah",
"Camila", "Stefanie", "Daysi", "Brittaney", "Lavonda", "Janice",
"Tiny", "Peg", "Kaila", "Janay", "Inga", "Melissa", "Delila", "Patience",
"Delma", "Ressie", "Nenita", "Casimira", "Theda", "Ethel", "Christinia",
"Nyla", "Letha", "Lea", "Cindy", "Nancy", "Jazmine", "Vanita", "Larhonda",
"Tai", "Charise", "Latoria", "Shanti", "Kyla"
};
private static readonly int MaleFirstNamesCount = ListOfMaleFirstNames.Length;
private static readonly string[] ListOfFemaleFirstNames =
{
"Verna", "Almeta",
"Melvina", "Digna", "Dortha", "Ione", "Sonya", "Shiela", "Shonna",
"Tania", "Susanne", "Ellie", "Felice", "Caitlyn", "Bethel", "Kamilah",
"Camila", "Stefanie", "Daysi", "Brittaney", "Lavonda", "Janice",
"Tiny", "Peg", "Kaila", "Janay", "Inga", "Melissa", "Delila", "Patience",
"Delma", "Ressie", "Nenita", "Casimira", "Theda", "Ethel", "Christinia",
"Nyla", "Letha", "Lea", "Cindy", "Nancy", "Jazmine", "Vanita", "Larhonda",
"Tai", "Charise", "Latoria", "Shanti", "Kyla"
};
private static readonly int FemaleFirstNamesCount = ListOfFemaleFirstNames.Length;
private static readonly string[] ListOfLastNames =
{
"Smith", "Jones", "Williams", "Brown", "Wilson", "Taylor", "Morton", "White",
"Martin", "Anderson", "Thompson", "Nguyen", "Thomas", "Walker", "Harris",
"Lee", "Ryan", "Robinson", "Kelly", "King", "González", "Rodríguez",
"Hernández", "Pérez", "García", "Martín", "Santana", "Díaz", "Suárez",
"Sánchez", "Smith", "Brown", "Lee", "Wilson", "Martin", "Patel", "Taylor",
"Wong", "Campbell", "Williams", "Kim", "Lee", "Park", "Choi", "Jeong",
"Kang", "Cho", "Yoon", "Jang", "Lim"
};
private static readonly int LastNamesCount = ListOfLastNames.Length;
#endregion
/// <summary>
/// Return a random name. Might be male/female and with a diverse last name range.
/// </summary>
/// <param name="aMale">If true will return male name</param>
/// <param name="aFemale">If true will return female name</param>
/// <returns>If both param are true or null, random name. Otherwise, male or female
/// name depending on the param that is true</returns>
public static string RandomName(bool? aMale=null, bool? aFemale=null)
{
string first;
// Not specified, select at random
if ((aMale == null && aFemale == null) ||
(aMale == true && aFemale == true))
{
var gender = RandomBool();
first = (gender) ? ListOfMaleFirstNames[RandomInt(0, MaleFirstNamesCount)]
: ListOfFemaleFirstNames[RandomInt(0, FemaleFirstNamesCount)];
}
else if (aMale == true)
first = ListOfMaleFirstNames[RandomInt(0, MaleFirstNamesCount)];
else
first = ListOfFemaleFirstNames[RandomInt(0, FemaleFirstNamesCount)];
string last = ListOfLastNames[RandomInt(0, LastNamesCount)];
return string.Format("{0} {1}", first, last);
}
}
}
c# Random Class usage的更多相关文章
- UUID(uuid)js 生成
全局唯一标识符(GUID,Globally Unique Identifier)也称作 UUID(Universally Unique IDentifier) . GUID是一种由算法生成的二进制长度 ...
- javascript 生成UUID
代码一: /*! Math.uuid.js (v1.4) http://www.broofa.com mailto:robert@broofa.com Copyright (c) 2010 Rober ...
- 【OpenCV】漫水填充
漫水填充:也就是用一定颜色填充联通区域,通过设置可连通像素的上下限以及连通方式来达到不同的填充效果;漫水填充经常被用来标记或分离图像的一部分以便对其进行进一步处理或分析,也可以用来从输入图像获取掩码区 ...
- 简单了解uuid
1.含义 UUID-Universally Unique IDentifiers,翻译过来就是“全局唯一标志符”. UUID到底是什么? UUID是一个标帜你系统中的存储设备的字符串,其目的是帮助使用 ...
- Shell脚本实现乱序排列文件内容的多种方法(洗牌问题)
洗牌问题:洗一副扑克,有什么好办法?既能洗得均匀,又能洗得快?即相对于一个文件来说怎样高效率的实现乱序排列? ChinaUnix 确实是 Shell 高手云集的地方,只要你想得到的问题,到那里基本上都 ...
- (转)Image Segmentation with Tensorflow using CNNs and Conditional Random Fields
Daniil's blog Machine Learning and Computer Vision artisan. About/ Blog/ Image Segmentation with Ten ...
- python的random模块
As an example of subclassing, the random module provides the WichmannHill class that implements an a ...
- USB HID usage table
This usage table lets usbhidctl decode the HID data correctly for the APC RS/XS1000's. This work was ...
- Prefer ThreadLocalRandom over Random
Java 7 has introduced a new random number generator - ThreadLocalRandom Normally to generate Random ...
随机推荐
- ubuntu解压zip文件乱码问题
我的zip文件里的内容是有中文名,也有密码,在网上找到几种解决办法只有一种可以,所以在这里记录一下: 首先是安装7zip来解压,7zip的解决办法在这里,但是无法解决我的问题,仍然有乱码问题 最后是在 ...
- Windows Server 2012下安装Hyper-V虚拟机
Windows Server 2012下安装Hyper-V虚拟机 Win server 2012系统中Hyper-V 性能进一步提高,广大爱好者都尝试体验它,可是有不少朋友无法正确安装虚拟机,尽管在网 ...
- [Nginx 1] Nginx简介
导读:现在项目中用到这个Nginx了,本来是想着把代码调通了就得了.想想还是花点时间总结总结,就利用门卫思维吧.今天主要是一个整体的介绍,然后在学习的过程中,接着总结Nginx的其他使用事宜. 一.什 ...
- oracle权限
Oracle 权限 权限允许用户访问属于其它用户的对象或执行程序,ORACLE系统提供三种权限:Object 对象级.System 系统级.Role 角色级.这些权限可以授予给用户.特殊用户publi ...
- java map缓存
/** * 缓存池 * @author xiaoquan * @create 2015年3月13日 上午10:32:13 * @see */ public class CachePool { ...
- 菜鸟学WEB开发 ASP.NET 5.0 1.0
在学习之初我要强调一点“微软要向跨平台开发”大举进军了,不管他能走多远,这是微软的必经之路. 一.学习流程: 创建ASP.NET APPLICATION 项目——项目结构——结构分析. 1.创建ASP ...
- C/C++中产生随机数
可以使用srand()函数和rand()函数来产生随机数,其中srand()用来初始化随机数种子,rand()用来产生随机数.因为默认情况下随机数种子为1,而相同的随机数种子产生的随机数是一样的,失去 ...
- 【MVC】ASP.NET MVC HtmlHelper用法大全
1.ActionLink <%=Html.ActionLink("这是一个连接", "Index", "Home")%> 带 ...
- 使用CSS创建有图标的网站导航菜单
在我创建的每一个互联网应用中,我都试图避免创建完全由图片组成的菜单.在我看来,网页菜单系统中应该使用文字.这样做也会让菜单变得更干净利落.清晰和易读,不用考虑应用程序如何读取它,以及页面放大的时候也不 ...
- 微信Api
//定义变量 HttpRequest Request; HttpResponse Response; HttpServerUtility Server; HttpContext Context; pr ...