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 ...
随机推荐
- Retrofit入门
1 Retrofit retrofit = new Retrofit.Builder() .addConverterFactory(ScalarsConverterFactory.create()) ...
- 【Hibernate 8】Hibernate的调优方法:抓取策略
在上一篇博客中,介绍了Hibernate的缓存机制.合理的配置缓存,可以极大程度上优化Hibernate的性能.这篇博客,介绍另外一个调优方式:抓取策略. 一.什么是抓取策略 抓取策略(fetchin ...
- HTTP CHUNKED C实现
C语言不像C#一样有很多很多高度的模块化的东西可以使用,在通讯过程中特别是与http相关的通讯过程中可能要对网站返回的数据做一定处理,而且有不少网站的回应是强制性的,例如向网站请求deflate有个能 ...
- JS常用的设计模式(17)—— 状态模式
状态模式主要可以用于这种场景 1 一个对象的行为取决于它的状态 2 一个操作中含有庞大的条件分支语句 回想下街头霸王的游戏. 隆有走动,攻击,防御,跌倒,跳跃等等多种状态,而这些状态之间既有联系又互相 ...
- console.log在线调试
前端开发人员工作有时候会用到console.log,PC端直接能打开开发者工具.但是移动端就不太方便了,为此提供一种简单的方法,只需2步: 1.打开http://jsconsole.com/ 输入: ...
- poj3692_Kindergarten
这题目大意是:男孩互相认识,女孩互相认识,一部分男女之间认识,老师要选一部分人,要求这部分人必须都相互认识. 这是一个二部图,先求出补图,在补图中G‘左右两点有连线说明在G中两者不认识,反之成立. 所 ...
- s3c6410_uart初始化及读写
参考: 1)<USER'S MANUAL-S3C6410X>第31章 UART 2)u-boot uart初始化及读写:u-boot-x.x.x/board/samsumg/smdk641 ...
- 对C语言中va_list,va_start,va_arg和va_end的一点理解
这几个函数和变量是针对可变参数函数的,什么是可变参数函数呢,最经典的莫过于printf和scanf,这两个函数的声明如下: int printf(const char *format, ...); i ...
- placeholder插件及placeholder默认颜色修改
$.fn.placeHolder = function(){ $(this).each(function(i, el) { var self = $(el); if ($.browser.msie & ...
- 那么如何添加网站favicon.ico图标
1. 获得一个favicon.ico的图标,大小为16px×16px最为合适 2. 将制作好的图标文件Favicon.ico上传到网站的根目录: 3. 在首页文件的html代码的头部中加入如下代码: ...