【问题标题】:Rand function won't work as supposed in C [duplicate]Rand 函数在 C 中无法正常工作 [重复]
【发布时间】:2015-05-07 15:42:56
【问题描述】:

我想用随机数填充表格并计算填充它所需的时间。

时间似乎没问题,但在我打印表格后,数字不是随机的。

打印:0 1 2 3 4 5 6 7 8 9

#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#define N 10

int  getUniqueNumber(int *p, int i);

int main()
{
    int i, p[N];
    long t0, t1, dt;

    printf("Getting %i random numbers...",N);
    time(&t0);
    for (i=0; i<N; i++)
       p[i] = getUniqueNumber(p,i);
    time(&t1);
    printf("Task Completed.\n\n");
    dt = t1 - t0;
    printf("Calc time = %ld\n",dt);

    for(i=0; i<N; i++)
       printf("%d ",i);

    return 0;
}

int  getUniqueNumber(int *p, int i)
{

    int x, j, found;
    do
    {
        srand(time(NULL));
        x = rand();
        found = 0;
        j = 0;
        while (j<=i && found == 0)
        {
            if (p[j] == x)
               found = 1;
            else
               j++;
         }
     }while (found == 1);

     return x;
}

注意:#define 中的 N 为 30000。

为了方便,我做了 10 个。

【问题讨论】:

    标签: c random srand


    【解决方案1】:

    您应该只拨打一次srand(time(NULL));

    【讨论】:

    • 我应该把srand(time(NULL));搬到哪里?
    • main开头。
    • 好的,我把它放在main 中的第一个printf 上面,但没有运气......
    • @iSpithash;那是因为你没有打印表格。将main 中的printf("%d ",i); 更改为intf("%d ",p[i]);
    • 天哪,我真笨。谢谢你的帮助,就是这样:)
    猜你喜欢
    • 2012-09-10
    • 2019-03-31
    • 1970-01-01
    • 2021-12-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多