1 using System;
2
3 namespace Wen.Helpers
4 {
5 /// <summary>
6 /// 随机数助手
7 /// </summary>
8 public sealed class RandomHelper
9 {
10 /// <summary>
11 /// 字符集合(去掉 0oO 这几个容易混淆的字符)
12 /// </summary>
13 private const string CharSet = "123456789abcdefghijklmnpqrstuvwxyzABCDEFGHIJKLMNPQRSTUVWXYZ~!@#$%^&*()_+|" ;
14
15 private static readonly Random Random = new Random ();
16
17 #region Next
18
19 /// <summary>
20 /// 返回非负随机数
21 /// </summary>
22 /// <returns> 大于等于零且小于 System.Int32.MaxValue 的 32 位带符号整数 </returns>
23 public static int Next()
24 {
25 return Random.Next();
26 }
27
28 /// <summary>
29 /// 返回一个指定范围内的随机数
30 /// </summary>
31 /// <param name="maxValue"> 要生成的随机数的上限(随机数不能取该上限值)。maxValue 必须大于或等于零 </param>
32 /// <returns>
33 /// 大于等于零且小于 maxValue 的 32 位带符号整数,即:返回值的范围通常包括零但不包括 maxValue。 不过,如果 maxValue 等于零,则返回 maxValue。
34 /// </returns>
35 public static int Next( int maxValue)
36 {
37 return Random.Next(maxValue);
38 }
39
40 /// <summary>
41 /// 返回一个指定范围内的随机数
42 /// </summary>
43 /// <param name="minValue"> 返回的随机数的下界(随机数可取该下界值) </param>
44 /// <param name="maxValue"> 返回的随机数的上界(随机数不能取该上界值)。 maxValue 必须大于或等于 minValue</param>
45 /// <returns>
46 /// 一个大于等于 minValue 且小于 maxValue 的 32 位带符号整数,即:返回的值范围包括 minValue 但不包括 maxValue。
47 /// 如果 minValue 等于 maxValue,则返回 minValue。
48 /// </returns>
49 public static int Next( int minValue, int maxValue)
50 {
51 return Random.Next(minValue, maxValue);
52 }
53
54 #endregion Next
55
56 /// <summary>
57 /// 返回一个介于 0.0 和 1.0 之间的随机数
58 /// </summary>
59 /// <returns> 大于等于 0.0 并且小于 1.0 的双精度浮点数 </returns>
60 public static double NextDouble()
61 {
62 return Random.NextDouble();
63 }
64
65 /// <summary>
66 /// 返回一个随机字符串
67 /// </summary>
68 /// <param name="length"> 字符串长度 </param>
69 /// <returns></returns>
70 public static string NextString( int length)
71 {
72 var arr = new char[length];
73
74 for (var i = 0; i < length; i++)
75 {
76 var index = Random.Next(CharSet.Length);
77 arr[i] = CharSet[index];
78 }
79
80 return string .Join( "", arr);
81 }
82 }
83 }