0

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 でこれを機能させる理由と方法を誰か説明してもらえますか?

4

1 に答える 1

0

float や print の代わりに double を使用する必要があると思い(double)uます%f。ただし、vararg 関数に渡されると、float が自動的に double に昇格されるという印象を受けました。

印刷を試すこともできます(int)(u*10000)

于 2011-06-18T02:02:59.287 に答える