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 ...
随机推荐
- 【MySQL】DNS与MHA/ZABBIX构建的高可用MySQL
MySQL实例组与DNS和MHA/ZABBIX架构示意图: DNS搭建:http://www.cnblogs.com/jiangxu67/p/4801230.html MHA分析:http://www ...
- 从汇编层面深度剖析C++虚函数
文章出处:http://blog.csdn.net/linyt/article/details/6336762 虚函数是C++语言实现运行时多态的唯一手段,因此掌握C++虚函数也成为C++程序员是否合 ...
- 设计模式-观察者模式(Observer)
简介: 观察者模式,也称为订阅-发布模式,定义对象间的一种一对多的依赖关系,当一个对象的状态发生变化时,所有依赖他的对象都得到通知并被自动更新. 主要由以下几个部分组成: a.Subject目标对象. ...
- 个人博客实现Archives查询小记
这两天正在做博客,刚刚遇到一个问题,就是需要在主页实现文档分类功能,即通过日期将文章进行按日期进行分类. 比如这样的: 我个人的想法是,查询所有文章的日期,然后将日期进行格式化,只留下年份和月份,然后 ...
- datagridview添加复选框全选和取消
全选 private void All_selected_Click(object sender, EventArgs e) { ; i < this.DataGridViewProduct.R ...
- luigi学习6--parameters详解
parameter就好比是一个task的构造方法.luigi要求你在类的scope上定义parameter. 如下面就是一个定义parameter的例子: class DailyReport(luig ...
- zabbix一些高级功能介绍
根据上篇配置的环境,接下来说明在zabbix agent上执行远程命令是如何完成的. 远程命令受到一些限制: (1)在agent执行远程命令必须给zabbix用户定义sudu规则: (2)不支持act ...
- 正确使用stl map的erase方法
先声明:下面的文章是针对windows的用法,因为std::map的erase函数的windows的实现版本是返回一个std::map的迭代器,但是STL标准里面的该函数的返回值确是: map.era ...
- (转)Android系统自带Activity样式(@android:style/)
在AndroidManifest.xml文件的activity中配置 1.android:theme="@android:style/Theme" 默认状态,即如果theme这里不 ...
- 银河英雄传说 (codevs 1540) 题解
[问题描述] 公元五八○一年,地球居民迁移至金牛座α第二行星,在那里发表银河联邦创立宣言,同年改元为宇宙历元年,并开始向银河系深处拓展. 宇宙历七九九年,银河系的两大军事集团在巴米利恩星域爆发战争.泰 ...