我很难弄清楚如何使用 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/