阻塞当前线程一小段时间
random rnd1 = new random();
system.threading.thread.sleep(500);
random rnd2 = new random();
或者:应用一个算法来区分每个调用的种子值。
例如,下面的代码使用右移位运算符为多个可以使用相同时间值初始化的 random 对象(在 1 和大约 28 个对象之间)生成不同的种子值。
int count = 4;
random[] rnds = new random[count];
for (int i = 0; i < count; i++)
{
rnds[i] = new random(unchecked((int)(datetime.now.ticks >> i)));
}
5:用随机数填充指定字节的数组
random rnd = new random();
// 数组长度自定义
byte[] bs = new byte[9999];
// 字节数组的每个元素均设置为一个大于等于零而小于或等于 maxvalue 的随机数。maxvalue=255,可取上界值
rnd.nextbytes(bs);
6:生成大于等于 0.0 小于 1.0 的双精度浮点数
random rnd = new random();
// 大于等于 0.0 并且小于 1.0 的双精度浮点数。
double d = rnd.nextdouble();
// 格式化为 5 位小数,当然还有更多种格式化
string s = string.format("{0:f5}", d);
7:生成随机整数
random rnd = new random();
// 大于等于零且小于 maxvalue 的 32 位带符号整数。maxvalue=2,147,483,647,不可取上界值
int i1 = rnd.next();
// 大于等于零且小于 maxvalue 的 32 位带符号整数,不可取上界值
int i2 = rnd.next(10);
// 一个大于等于 minvalue 且小于 maxvalue 的 32 位带符号整数,不可取上界值,可以取负值
int i3 = rnd.next(-10, 100);
8:生成随机大写字母
public string getuppercase(random rnd)
{
// a-z ascii值 65-90
int i = rnd.next(65, 91);
char c = (char)i;
return c.tostring();
}
9:生成随机小写字母
public string getlowercase(random rnd)
{
// a-z ascii值 97-122
int i = rnd.next(97, 123);
char c = (char)i;
return c.tostring();
}
10:生成随机大小写字母混合
public string getletter(random rnd)
{
// a-z ascii值 65-90
// a-z ascii值 97-122
int i = rnd.next(65, 123);
char c = (char)i;
if (char.isletter(c))
{
return c.tostring();
}
else
{
// 递归调用,直到随机到字母
return getletter(rnd);
}
}
11:生成随机大小写字母和数字混合
public string getchar(random rnd)
{
// 0-9
// a-z ascii值 65-90
// a-z ascii值 97-122
int i = rnd.next(0, 123);
if (i < 10)
{
// 返回数字
return i.tostring();
}
char c = (char)i;
// 返回小写字母加数字
// return char.islower(c) ? c.tostring() : getchar(rnd);
// 返回大写字母加数字
// return char.isupper(c) ? c.tostring() : getchar(rnd);
// 返回大小写字母加数字
return char.islower(c) ? c.tostring() : getchar(rnd);
}
12:其它随机生成方案
数组方式:略
字符串方式:
string str = @"0123456789abcdefghigklmnopqrstuvwxyzabcdefghigklmnopqrstuvwxyz";
public string getmix(random rnd)
{
// 返回数字
// return rnd.next(10).tostring();
// 返回小写字母
// return str.substring(10+rnd.next(26),1);
// 返回大写字母
// return str.substring(36+rnd.next(26),1);
// 返回大小写字母混合
// return str.substring(10+rnd.next(52),1);
// 返回小写字母和数字混合
// return str.substring(0 + rnd.next(36), 1);
// 返回大写字母和数字混合
// return str.substring(0 + rnd.next(36), 1).toupper();
// 返回大小写字母和数字混合
return str.substring(0 + rnd.next(61), 1);
}