C语言生成固定范围的随机数

#include <stdio.h>     //默认 printf等
#include <stdlib.h>     //随机数
#include <string.h>     //字符串操作函数
#include <sys/time.h>    // for gettimeofday()
int mt_rand(int, int);
int get_random_seed(void);

int main(void) {
    int arr[10000][2]={0};
    for (int i = 0; i < 10000; ++i) {
        int num = mt_rand(1,100);
        arr[num-1][0]=num;
        arr[num-1][1]++;
    }
    for (int j = 0; j <100 ; ++j) {
        printf("随机数字:%d,随机次数:%d \n",arr[j][0],arr[j][1]);
    }
    return 0;
}

/**
 * 获取随机数种子
 * @return 
 */
int get_random_seed(void) {
    char time_str[32];//字符串
    char time_str2[16];//字符串
    int microtime;
    struct timeval time;
    time_str[0]=0;//字符串置空
    time_str2[0]=0;//字符串置空
    gettimeofday(&time, NULL);//获取系统时间
    sprintf(time_str, "%d%d", time.tv_sec, time.tv_usec);//将整型拼接为字符串
    strncpy(time_str2,time_str+6,strlen(time_str)-5);//截取字符串
    sscanf(time_str,"%d",&microtime);//将字符串转换成整型
    return microtime;
}

/**
 * 根据区间随机
 * @param start 
 * @param end 
 * @return 
 */
int mt_rand(int start, int end) {
    srand(get_random_seed());
    return rand() % (end + 1 - start) + start; /*生成一个[start,end)区间内的整数*/
}


仙士可博客
请先登录后发表评论
  • 最新评论
  • 总共0条评论
  • 本站由白俊遥博客程序搭建
    © 2017-1-17 php20.cn 版权所有 ICP证:闽ICP备17001387号
  • 联系邮箱:1067197739@qq.com