Chinaunix首页 | 论坛 | 博客
  • 博客访问: 277900
  • 博文数量: 46
  • 博客积分: 2021
  • 博客等级: 大尉
  • 技术积分: 406
  • 用 户 组: 普通用户
  • 注册时间: 2006-08-03 13:00
文章分类

全部博文(46)

文章存档

2011年(1)

2010年(9)

2009年(2)

2007年(13)

2006年(21)

我的朋友

分类: LINUX

2006-10-19 15:27:18

#include <stdio.h>
#include <string.h>
#include <sys/time.h>
#include <stdlib.h>
int main()
{
    unsigned int seed;
    struct timeval now;
    int i=0;
    float tmp;
    float rand;
    gettimeofday(&now, NULL);
    seed = now.tv_sec ^ now.tv_usec;

    while (i<10)
    {
        printf("rand = %.1f\n", (float)rand_r(&seed)/RAND_MAX*0.4+0.1);
        i++;
    }
}

[zhanghua@melon TEST]$ gcc rand_r-test.c -o rand_r-test
[zhanghua@melon TEST]$ ./rand_r-test
rand = 0.4
rand = 0.1
rand = 0.4
rand = 0.3
rand = 0.3
rand = 0.3
rand = 0.2
rand = 0.4
rand = 0.2
rand = 0.4
[zhanghua@melon TEST]$ ./rand_r-test
rand = 0.2
rand = 0.3
rand = 0.1
rand = 0.2
rand = 0.3
rand = 0.5
rand = 0.2
rand = 0.1
rand = 0.2
rand = 0.2

上面例子生成0.1 - 0.5之间的随机数.
其中:
rand_r(&seed)/RAND_MAX将得到0 -1 之间的数.
乘以0.4则生成0 - 0.4之间的数, 再加上0.1得到0.1 - 0.5之间的随机数.

阅读(1704) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~