3

間隔 [0,1] でランダムな実数を生成したいと思います。nたとえば、数値のポインターを設定したいので、 を指定nすると、ランダムに生成された数値が参照されます。

StackOverflow と Google で検索しましたが、それらのほとんどは C++ または整数用です。

回答で提案されたこのコードを試しました:

#include <stdio.h>
#include <stdlib.h>
int main()
{
 double n;
double get_random() { return (double)rand() / (double)RAND_MAX; }
n = get_random();
printf("%f", n);
   return 0;
}

ただし、値は 0.00000000 しか取得できません。

プログラムを修正するにはどうすればよいですか?

4

2 に答える 2

5

以下を使用できます。

#include <time.h>
srand(time(NULL)); // randomize seed
double get_random() { return (double)rand() / (double)RAND_MAX; }
n = get_random();

srand()randが疑似乱数を生成するために使用するシードを設定します。srandへの最初の呼び出しの前に呼び出さないとrand、呼び出したのと同じになりますsrand(1)(デフォルトとして機能します)。

[1] を除外する場合:

(double)rand() / (double)((unsigned)RAND_MAX + 1);

完全なソリューション:

#include <stdio.h>
#include <time.h>
#include <stdlib.h>

double get_random() { return ((double)rand() / (double)RAND_MAX); }

int main()
{
    double n = 0;
    srand(time(NULL)); // randomize seed
    n = get_random(); // call the function to get a different value of n every time

    printf("%f\n", n);  // print your number
    return 0;
}

実行するたびに、 の異なる番号が取得されnます。

于 2016-01-31T17:44:30.300 に答える