
如果我们想要产生0-25范围内的数,如下:
$RANDOM%26
用这个环境变量对26取模,就可以得到最小是0,最大是25的数了。
如果想得到1--68范围内的数,可以这样
$RANDOM%68+1,
前面可以得到最小为0,最大为67的随机数,再加上1,很自然的就可以得到最大为1,最小为68的数了。
如果想得到6--87范围内的数。可以这样
$RANDOM%82+6,
前面可以得到最小为0,最大为81的随机数,再加上6,很自然的就可以得到最大为87,最小为6的数了。
如何设置种子呢?一般就 用time函数返回当前时间即可。一般来讲,这样的做法基本上就可以了,因为虽然我们用的是随机数,但是由于种子不同,从上亿的数中去猜测我们的种子几乎 是不可能的。例如:#include #include #include #define random(x) (rand()%x) void main() { srand((int)time(0))for(int x=0x 0) { unsigned int rint ifor (i = 0i <512i++) { read (fd, &r, sizeof (r))ticks += r} close (fd)} srand (ticks)printf("init finished ")} unsigned int new_rand () { int fdunsigned int n = 0fd = open ("/dev/urandom", O_RDONLY)if (fd >0) { read (fd, &n, sizeof (n))} close (fd)return n} int main () { int n, iinit_random ()n = rand ()printf ("n=%d ", n)for(i=0i欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)