为什么这个程序只生成0.1-0.2的数字。它需要生成0-1的数字。
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
int main (int argc, char *argv[])
{
/*declare pseudo-random number */
float random;
srand(time(NULL));
random = (float) rand() / (float) RAND_MAX;
printf("The random number is %f\n", random);
return 0;
}
我正在使用mac上的gcc进行编译。
答案 0 :(得分:4)
代码对我来说似乎很好。尝试生成多个数字,然后看:
for(i=1; i<100; i++){
random = (float) rand() / (float) RAND_MAX;
printf("%f\n", random);
}
答案 1 :(得分:1)
int random_seed;
void __cdecl srand(int data){
random_seed = data;
}
int __cdecl rand (
void
)
{
return( ((random_seed = random_seed * 214013L
+ 2531011L) >> 16) & 0x7fff );
}
这是在Windows CRT上执行srand()和rand()。我不确定我是否会被MS起诉。
显然,你可能需要多次调用rand()以获得0到1之间的正确值。无论什么时候()返回[因为它只会被设置为random_seed]。
答案 2 :(得分:0)
上面的代码对我来说很好(在ubuntu中为gcc),即我的输出从0.1变为1.尝试运行程序三到四次然后看输出