

No.2ベストアンサー
- 回答日時:
乱数は1の方が答えてるので、確率は
kakuritsu = 80;
if(kakuritsu <=0 || kakuritsu < rand()%100+1)
{
外れ
}else{
当たり
}
で出来るはずです。kakuritsuには%の数が入ります。
この場合は80%の確率で当たります。
関数にすると良いかもしれません。
1が50%で、2が25%というやり方だと、その1とか2という変数に応じて確率を入れると良いと思います。
回答ありがとうございます
ifは本に書いてあったのでわかります(少しですが^^;)
randという関数は初めてみました。
自分が買った本は超初心者用だと思うんで^^;
No.4
- 回答日時:
★アドバイス
>また1が50%で、2が25%、3が10%で4~6が5%づつとか
>出る確率を設定することとかも出来るのでしょうか?
この場合は 0~99(%) までの乱数を発生させてif出条件分岐すればよい。
下にサンプルを載せておきます。
サンプル1:
int rnd, saikoro;
// 乱数の初期化と乱数発生
srand( time(NULL) );
rnd = (rand() % 100);
if ( rnd < 50 ){
saikoro = 1;
}
else if ( rnd < 50+25 ){
saikoro = 2;
}
else if ( rnd < 50+25+10 ){
saikoro = 3;
}
else if ( rnd < 50+25+10+5 ){
saikoro = 4;
}
else if ( rnd < 50+25+10+5+5 ){
saikoro = 5;
}
else if ( rnd < 50+25+10+5+5+5 ){
saikoro = 6;
}
サンプル2:
static const int randtable[] = {
50, 25, 10, 5, 5, 5, -1,
}; int i, sum, rnd, saikoro;
// 乱数の初期化と乱数発生
srand( time(NULL) );
rnd = (rand() % 100);
for ( sum = i = 0 ; randtable[i] != -1 ; i++ ){
sum += randtable[ i ];
if ( rnd < sum ){
saikoro = (i + 1);
break;
}
}
その他:
・サンプル1、サンプル2も両方とも同じです。
サンプル2は後で確立のパーセントをカスタマイズ可能にするために randtable 配列と
for分を使っています。サンプル1は理解しやすいようにしました。
参考にして下さい。
・以上。
参考URL:http://www.mit.msn.to/algorithm/stdlib.html
回答ありがとうございます
if elseは多少ですがつかったことあるんでわかります
わざわざサンプルありがとうございました^^
大変わかりやすいです^^

No.3
- 回答日時:
一応no2の解説。
紙に棒を書きます。1から100までのメモリがあります。
確率の長さだけ下から塗りつぶします。
80%なら、1から80まで。
その棒を矢印が高速で動いています( rand()%100+1 )。止まったとき、塗りつぶしたところである、1から80のどこかに矢印が止まれば当たりです。
外れである、81から100の間に止まれば外れです。
0%やマイナス4000%なんていうのは勿論外れです。
友人に考えてもらったんですけどね。
ちなみに確率が少数になる場合は、小数点を動かして整数にして、randの部分も出る数をそれに合わせてください。
例えば、80.5%で当たるなら整数の805にして、棒の長さは100ではなく1000になります。両方十倍。
1000のうち1から805のどこかに矢印が止まればあたりです。
回答ありがとうございます
大変わかりやすい説明で自分でも理解できます^^;
rand関数は自分がもってる本には載ってないみたいです
入門編と応用編2冊ありますがもっと高度なのかも^^;
ありがとうございました
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
DataGridViewのカラムに自動で連番
-
他の人には声だして挨拶してる...
-
"判定"の英語表現について
-
C#でButtonのフォーカス枠を消...
-
Excelのマクロで実行時エラー”1...
-
メッセージボックスを前面に表...
-
【至急】フォトショップの「自...
-
C# ReadOnlyのTextBoxで
-
SPREAD(GrapeCity)のセルにフォ...
-
MFCでコンボボックスを選択不可...
-
どこにもフォーカスを当てたくない
-
バッチ処理が一枚の写真しか処...
-
矢印(左右)キーでイベントを...
-
下記パソコンに Windows11をイ...
-
レーザのスポット径の計算式
-
Outlookでメッセージの編集がで...
-
Chrome フォーカス時に枠が表示...
-
VLCの再生時の色がおかしく...
-
grep検索では
-
VLCメディアプレイヤーでのコマ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
DataGridViewのカラムに自動で連番
-
Microsoft Agent を動かすサン...
-
Flash の教本
-
Google Maps APIを始めてみたの...
-
VBとAdobe Acrobat SDKを使用し...
-
VBScriptの勉強方法
-
PHPでメールフォームを作りたい...
-
DirectSoundの仕組みと使い方。
-
アプリからソースコードを知るには
-
携帯サイトを作成しましたが、...
-
C#でusbカメラ複数表示
-
facebook ファンページ作成につ...
-
iアプリ開発 スピード(時速)計...
-
VBS + WMI リモートレジストリ
-
サービスの停止
-
VB.NETが学習できるようなサイ...
-
フラッシュ詳しい方にお願いし...
-
アクティブ化してコントロール...
-
GridViewにて行全体を選択する方法
-
リッチテキストエディタ サンプル
おすすめ情報