我很难弄清楚如何使用 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.
尝试随机化随机生成器而不将其强制转换为 in
/* initialize random seed: */
srand ( time(NULL) );
霍莉·莫莉……这并不容易。我记得很久以前在我的随机模型中我遇到了这个问题。据我所知,解决方案是使用一些实用指令。
无论如何,下面是解决方案并且它有效。每次都是随机数……不过有点俗气。
#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);
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)