2017-06-22 13 views
0

私はちょうどC + +で始まり、単純なテキストベースの冒険を作成しています。私は、確率に基づくイベントをどのように持つかを見極めようとしています。たとえば、箱を開けたときに剣があり、刃が50%の確率で50%の確率で倒れる可能性があります。私は乱数生成器を作る方法を知っていますが、その番号を何かに関連付ける方法はわかりません。私が望むもののバリエーションを作りましたが、ユーザは乱数を入力する必要があります。私は、乱数が50以上であるか50未満であるかに基づいてif文を生成する方法を考えています。確率と乱数

答えて

-1

rand()を使用すると、範囲0..RAND_MAXです。だからあなたのようなもの行うことができ、50%の確率のために:

#include <stdlib.h> 

if (rand() < RAND_MAX/2) 
{ 
    // sword - 50% probability 
} 
else 
{ 
    // knife - 50% probability 
} 

をあなたは明らか単純に各ケースの範囲0..RAND_MAXで適切なしきい値を定義することにより、各ケースの任意の確率で二つ以上の異なる例にこれを拡張することができます、例えば

int r = rand(); 

if (r < RAND_MAX/4) 
{ 
    // sword - 25% probability 
} 
else if (r < 3 * RAND_MAX/4) 
{ 
    // knife - 50% probability 
} 
else 
{ 
    // axe - 25% probability 
} 
2

%とrandの残りの演算子を使用します。 0を剣に、1をナイフにすることができます。 rand()%2はあなたに0または1を与えます。

axが必要な場合は、rand()%3を使用してください。 0,1、または2を与えることができます。
2はaxを表し、0と1は上記と同じです。 ifとelsesは明らかです。

rand()%nここでnが大きい数値のほうが小さい数値を返す可能性が高くなります。確率は等しく分布していない。 stlやboostからいくつかの乱数ジェネレータをチェックアウトすることができます。