【问题标题】:Generating random numbers code [duplicate]生成随机数代码[重复]
【发布时间】:2013-11-22 16:33:36
【问题描述】:

我有一个生成随机数的函数。为什么它总是产生相同的?我尝试多次运行该算法,但总是得到相同的结果。

#ifndef UTIL_H
#define UTIL_H

#include <time.h>
#include <sys/time.h>
#include <stdlib.h>

#define MIN 0
#define MAX 100000


void randomArray (double *array, int length)
{
    int i ;  
    for (i = 0; i < length; i++) 
    {
        array[i] = (double) (rand () /
                   (((double) RAND_MAX + 1) / (double) (MAX - MIN + 1))) + MIN;
    }
}

int main(void) 
{
    int i;
    double test_array[9];

    randomArray(test_array,  9);    

    for(i = 0; i < 9; i++)
        printf("%f ", test_array[i]);
    printf("\n");

    return 0;
}

【问题讨论】:

    标签: c random


    【解决方案1】:

    您需要播种 rand 函数。在main 的开头使用srand(time(NULL))

    【讨论】:

      【解决方案2】:

      您的代码存在 3 个问题:

      1)srand 添加到您的main() 函数中:

      int main(void) {
          int i;
          double test_array[9];
      
          srand (time(NULL));        // here it is
      
          randomArray(test_array,  9);
      
          for(i = 0; i < 9; i++)
              printf("%f ", test_array[i]);
          printf("\n");
      
          return 0;
      }
      

      2) 添加stdio.h 库以使用printf()

      #include <stdio.h>
      

      3)存在未终止的#ifndef,编译时会报错。 添加#endif

      #ifndef UTIL_H
      #define UTIL_H
      #endif             // here it is
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2012-09-17
        • 1970-01-01
        • 2012-12-17
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-08-19
        • 2012-01-23
        相关资源
        最近更新 更多