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で質問しましょう!
似たような質問が見つかりました
- Excel(エクセル) ExcelのIF関数について 4 2023/05/24 12:54
- その他(暮らし・生活・行事) 20個の数をランダムに示す時、全ての確率が同じになるように決めます。決める方法として20個の数が書か 2 2022/11/14 00:01
- C言語・C++・C# c言語の質問です。 ランダムに4桁の暗証番号を出力するプログラムを作ったのですが、4947→4973 3 2022/04/16 16:47
- C言語・C++・C# c言語 コマンドライン引数 4 2023/02/09 18:47
- その他(プログラミング・Web制作) プログラミングについて(Python) 添付した画像はC言語で簡単に作ったソースで、1つの配列に5つ 3 2022/09/10 19:15
- C言語・C++・C# C言語 3 2022/10/04 15:07
- C言語・C++・C# 至急お願いします。C言語で.imgのファイルを読み込んで1バイトづつ出力するプログラムを作りたいので 3 2023/01/16 22:49
- その他(プログラミング・Web制作) VBA 1 2023/01/19 16:19
- Visual Basic(VBA) Powerpointでランダムな数字の結果を表示するマクロ 2 2023/08/04 10:04
- 数学 既存の数列のランダム性について(初歩的質問) 2 2022/06/07 20:04
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
スプラッシュスクリーンを表示...
-
【至急】フォトショップの「自...
-
どこにもフォーカスを当てたくない
-
"判定"の英語表現について
-
メッセージボックスを前面に表...
-
どういう意味
-
C#でButtonのフォーカス枠を消...
-
他の人には声だして挨拶してる...
-
iPhoneのクイックアクションを...
-
Windows 10 で 外字を作る方法
-
Windows7でクリップボードを開...
-
ユーザーフォームのSetFocusが...
-
自分の声に無線でしゃべってる...
-
ctrl+c(copy)を実行するbat構文
-
SPREAD(GrapeCity)のセルにフォ...
-
Outlookでメッセージの編集がで...
-
アンカータグで移動後のURLに含...
-
画像解析ソフトImageJでの楕円...
-
ASP.NETにてロストフォーカス処理
-
炊飯器のセットの音と出来上が...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
DataGridViewのカラムに自動で連番
-
バイナリデータをOracleテーブ...
-
232C通信の受信について
-
VB6.0を勉強するにあたって
-
C#でusbカメラ複数表示
-
JavaScriptでシンプルなアプリ...
-
リッチテキストエディタ サンプル
-
画像処理について
-
C言語で電話帳機能を実現
-
VB.NETが学習できるようなサイ...
-
DirectSoundの仕組みと使い方。
-
ランダムで数を表示するには
-
VB.NETからC++で作成したdllの連携
-
グーグルマップをHPに加えま...
-
VBとAdobe Acrobat SDKを使用し...
-
iアプリ開発 スピード(時速)計...
-
VBScriptの勉強方法
-
【ASP.net】スプレッドのイベン...
-
WinPcapを利用したVB.NETのサン...
-
【至急】フォトショップの「自...
おすすめ情報