c - rand() 播种与 time() 问题

标签 c time random

我很难弄清楚如何使用 rand() 并使用 Xcode 用 time() 为其播种。我想生成 0 到 1 之间的随机十进制数。

代码为我提供了元素 1 和 2 看似随机的数字,但元素 0 始终在 0.077 左右。有什么想法吗?

我的代码是:

#include <stdio.h>
#include <stdlib.h>
#include <time.h>

int main(void)
{
double array[3];

double rand_max = RAND_MAX;

srand((int)time(NULL));

for (int iii = 0; iii < 3; iii++)
    array[iii] = rand() / rand_max;

for (int iii = 0; iii < 3; iii++)
    printf("Element %d is: %lf.\n", iii, array[iii]);

return(0);
}

多次运行的输出如下:

[Session started at 2010-09-11 21:19:07 -0500.]

Element 0 is: 0.076918.

Element 1 is: 0.753664.

Element 2 is: 0.824467.

The Debugger has exited with status 0.
[Session started at 2010-09-11 21:19:12 -0500.]
Element 0 is: 0.076957.
Element 1 is: 0.411353.
Element 2 is: 0.602494.

The Debugger has exited with status 0.

[Session started at 2010-09-11 21:19:16 -0500.]

Element 0 is: 0.076988.

Element 1 is: 0.937504.

Element 2 is: 0.624915.

The Debugger has exited with status 0.

[Session started at 2010-09-11 21:19:24 -0500.]

Element 0 is: 0.077051.

Element 1 is: 0.989806.

Element 2 is: 0.669757.

最佳答案

尝试随机化随机生成器而不将其转换到

/* initialize random seed: */
srand ( time(NULL) );
<小时/>

Holly molly...这并不容易。我记得很久以前在我的随机模型中我遇到了这个问题。据我所知,解决方案是使用一些实用指令。

无论如何,下面是解决方案并且它有效。每次都是随机数……不过有点俗气。

#include <stdio.h>
#include <stdlib.h>
#include <time.h>

int main(void)
{
    double array[10];

    double rand_max = RAND_MAX;

    srand(time(NULL));

    for (int iii = 0; iii < 9; iii++){
        rand();
        array[iii] = rand() / rand_max;
    }

    for (int iii = 0; iii < 9; iii++){
        printf("Element %d is: %lf.\n", iii, array[iii]);
    }


    return(0);
}

关于c - rand() 播种与 time() 问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3693511/

相关文章:

c++ - 将指针传递给结构在两个程序中的行为不同

c - 无法将二维 float 组分配给指针到指针到浮点

python - 如何快速创建不替换总体的随机样本?

c# - 时间跨度与持续时间

PHP Time() 到 Google Calendar Dates 时间格式

php - 从数组中返回一个随机值,概率与其值成正比

matlab - matlab中unifrnd和rand()函数的区别

c++ - Python ctypes : how to free memory? 获取无效指针错误

c - 1/(2^x) 可以用 C 编程语言表示的最小精确表示是什么?

安卓。 OKHttp。如何从正文 POST 响应中找到时间服务器?