多种生成随机数实现方法

作者:袖梨 2022-06-25

阻塞当前线程一小段时间

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

{

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

{

// 返回数字

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);

}

相关文章

精彩推荐