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 ...
随机推荐
- 用python3统计代码行数
今天接到一个电话面试,对方问我在一个项目中维护了多少行代码. 我懵逼了,从来没有统计过啊,怎么还会有这种需求? 当时一脸茫然的想了想,回答了一个,呃...差不多两千多行吧...感觉很心虚 挂完电话之后 ...
- boost:exception使用实例
/************************************************************************/ /*功能描述: boost exception使用 ...
- C语言开源项目
值得学习的C语言开源项目 - 1. Webbench Webbench是一个在linux下使用的非常简单的网站压测工具.它使用fork()模拟多个客户端同时访问我们设定的URL,测试网站在压力下工作的 ...
- 第五章_PHP流程控制
1.顺序结构 2.分支结构 2.1 if...else <?php $today=date("w"); //获取今天星期几 if($today==0){ echo 'Sund ...
- java实现 swing模仿金山打字 案例源码
java实现 swing模仿金山打字 案例源码,更多Java技术就去Java教程网.http://java.662p.com 代码: <font size="3">im ...
- [转载]《C++0x漫谈》系列之:多线程内存模型
<C++0x漫谈>系列之:多线程内存模型 By 刘未鹏(pongba) 刘言|C++的罗浮宫(http://blog.csdn.net/pongba) <C++0x漫谈>系列导 ...
- 快速解决Canvas.toDataURL 图片跨域的问题
出现Canvas.toDataURL 图片跨域问题怎么解决呢?下面小编就为大家带来一篇Canvas.toDataURL 图片跨域问题的快速解决方法.一起跟随小编过来看看吧 如题,在将页面的图片地址进行 ...
- Linux命令行修改IP、网关、DNS的方法
Linux中在命令行中修改IP地址.网关.DNS的方法. 网卡eth0 IP修改为 102.168.0.1 复制代码代码如下: ifconfig eth0 102.168.0.1 netmask ...
- 新浪博客如何显示高亮代码,DIY
新浪博客对代码的支持功能不尽完美,或者说一点都不好,可是对于一个追求完美的技术痴而言,代码不能够完美的显示,心里总有那么一些不爽,那么如何在新浪中显示那些带颜色的代码呢?经过探究,可以如下设置: ...
- django-url调度器-初级篇
Django 遵从 MVC 模型,并将其特色化为 MTV 模型.模型的核心是通过用户访问的 url 来指向处理的函数,而函数处理后返回相应的结果.所以url决定了用户访问的入口,另外表单处理的提交地址 ...