1

重複の可能性:
範囲内から乱数を生成する方法 - C

1 から N-1 の間の乱数を生成するにはどうすればよいでしょうか。N はユーザーが打ち込んだ数字です。

これまでのところ、私のコードは次のとおりです。

#include <stdio.h>
#include <stdlib.h>
int main()
{
    int number = 0; //number variable
    printf("This program will ask you for a number, an integer, and will print out a    random number from the range of your number 1, to N-1.");//output that explains the program's purpose and use to the user.
    //gets the input
    fgets(buffer, sizeof(buffer), stdin);
    sscanf(buffer, "%d", &number); //gets the input and stores it into variable number

    return (0);

}

4

4 に答える 4

1

数値をどの程度「ランダム」にしたいかによってrand()、標準の libc の関数を使用できます。この関数は、0 から RAND_MAX までの数値を生成します。その後、モジュロ演算を使用して適切な範囲で結果を得ることができます。

このジェネレータ (LCG) は、暗号化アプリケーションに科学アプリケーションに適していないことに注意してください。

より適切なジェネレーターが必要な場合は、Mersenne Twister などのジェネレーターを参照してください (ただし、暗号化は安全ではありません)。

于 2013-01-18T17:11:12.180 に答える
1

ランダムのリファレンスへのリンクは次のとおりです。

http://www.cplusplus.com/reference/cstdlib/rand/

あなたが使用することができます

num= rand() % n + 1;

于 2013-01-18T17:09:51.483 に答える
1

このようなことを試してください:-

unsigned int
randomr(unsigned int min, unsigned int max)
{
       double x= (double)rand()/RAND_MAX;

       return (max - min +1)*x+ min;
}

このリンクをチェックしてください: - http://c-faq.com/lib/randrange.html

于 2013-01-18T17:12:17.500 に答える
0

randを見る必要があります。数学のビットとあなたは解決策を持っています.

于 2013-01-18T17:08:29.790 に答える