我有以下简单的程序来生成1到4之间的浮点随机数:
#include<stdio.h>
#include <stdlib.h>
#include <time.h>
main()
{
int i = 0;
float u;
srand((unsigned)time(NULL));
for(i = 0;i< 10000 ; i++)
{
u = ((4-1)*((float)rand()/RAND_MAX))+1;
printf("The random value for iteration = %d is %2.4f \n", i, u);
}
}
它在x86 Red Hat Linux计算机上成功生成1到4之间的浮点随机数。但是同一个程序在运行Montavista Linux的PPC上产生0.0000随机数。
有人可以解释为什么以及如何在PPC Montavista上完成这项工作?
答案 0 :(得分:0)
预感是你应该使用double而不是float或打印(double)u
,因为%f
需要加倍。我的印象是浮动在传递给vararg函数时会自动提升为double。
您也可以尝试打印(int)(u*10000)
。