- ベストアンサー
乱数の発生確率(c++)
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
普通の乱数発生器はなら0から1までの一様乱数を発生できるよね。 で、0から0.8までなら0を出力して、0.8から1までなら1を出力すれば、OK
その他の回答 (2)
- επιστημη(@episteme)
- ベストアンサー率46% (546/1184)
// Visual C++ 10 でコンパイル/動作確認済 #include <iostream> #include <random> using namespace std; int main() { const int N = 10000; mt19937 rng; // メルセンヌ・ツイスタ bernoulli_distribution coin(0.2); // 確率0.2のベルヌイ分布 int true_count = 0; int false_count = 0; for ( int i = 0; i < N; ++i ) { if ( coin(rng) ) ++true_count; else ++false_count; } cout << true_count << ' ' << false_count << endl; }
- asuncion
- ベストアンサー率33% (2126/6288)
1000個のうち300個近く、というのは、200個の書き間違いでしょうか。
関連するQ&A
- 乱数について質問です
乱数について質問です 抽選の結果の計算なんですが 468 114 805 の3つの自然乱数が、ありそれを合計し3で除算した余り1に1を加算して114に当選となったのですが、 計算の仕方がいまいちわからず困っています。 3つの数字を合計して、1387で3で除算し、462.333・・・という数字になりますが 余り1に1を加算してというところが解りません。 言葉足らずかもしれませんがよろしくお願いします。
- 締切済み
- 数学・算数
- 乱数の発生方法
こんにちは! いつも大変参考にさせていただいております。 どうか教えていただきたい事があります。 数学は大の苦手で、学生時代からほとんど勉強してこなかっただけに、 数学の本を読んでも、今回の問題とどのように関係しているのかがわからず、お手上げ状態です。 実行したいのは、確率により乱数を発生させたいです。 たとえば、0から2の乱数を発生させるにあたり、 0の発生は50%、 1の発生は25%、 2の発生は25%、 というように、発生する確率を設定したいと思っています。 確率の本を読んでみたのですが、入門書には確率の求め方は載っていたのですが、それをどのように利用したらいいのかわかりません。 このような乱数の発生のさせかたは可能でしょうか? また、どのようにしたらいいのでしょうか? 教えてください。。。
- 締切済み
- Visual Basic
- 乱数とは?
乱数について、いくつか疑問に思っていることがあります。 乱数の定義は? 辞書には、 0から9までの一〇種類の数字が、それぞれ同じ確率で現れるように並べられた数字の列。 と、書いてあります。 と言うことは、各数字の現れる確率は10%です。 大量にDATAを取れば限りなく10%に近づくと言うことです。 そこで、 DATAが少ないと乱数にも偏った値が出て各数字10%にはなりません。 と言うことは、 各数字の発生確率が偏っている段階では、 次に現れる数字の予測がある程度可能だと思っていいのでしょうか? 確率の低い数字が出る確率が高い? そうなると、 予測が可能だと乱数とは言えないのではないでしょうか? 結果として確率が均等になればいいのであって、予測が出来る出来ないは関係ない?
- ベストアンサー
- 数学・算数
- 正規分布に従う乱数を発生させるには?
0以上1未満の実数のうちから均一な確率で乱数を発生できるものがあるとします。 (頭にあるのはプログラムのrnd関数です)。 この乱数をxとしたとき、このxを適当な変換式f=f(x)に代入して 正規分布に従うような数yを得たいと思います。 どうすればよいでしょうか?
- ベストアンサー
- 数学・算数
- 乱数発生ルーチンの使い方について
数値計算において一様乱数を発生させるルーチンがいろいろあります。ソースが公開されているものやコンパイラが提供したりするものです。それらを利用する場合、乱数発生のシーズ(種)を与えてそれに応じて動作するというものが多いだろうと思います。そこで質問ですが、10000個の乱数を1回発生させる場合と100個の乱数を100回発生させる場合とで乱数の感じがかなり違います。いずれの場合も100×100の2次元データ(エクセルのシート状)として出力して作図したらその違いが簡単に分かります。この違いの原因はシーズの与え方が1回と100回という違いだろうと思います。100回のシーズの与え方にパターンが出来てしまうからだと思われます。例えば時間を使ってシーズを与えなおすことも考えられますが、今時のPCだとあっという間なのでシーズが同じだから、同じ乱数が100個できてしまいます。乱数を繰り返し発生させるときにその繰り返しの中でパターン化された乱数にならないように発生させる方法がないでしょうか。シーズが要らない乱数生成ルーチンとかですが。あるいはシーズをランダムに取得する方法が含まれたルーチン(シーズがないように見える)などです。あるいは本当にないものなど。メルセンヌツイスターはどうなのでしょうか。一応、フォートランでの利用を考えていますが、言語依存の問題ではないかもと思いますが。 よろしくお願いします。
- 締切済み
- C・C++・C#
- エクセルで0超1未満の乱数を発生する方法
タイトルの通りです。 EXCELのRAND関数は0以上1未満の乱数を発生しますが、0超1未満の乱数を作る方法を教えて下さい。 確率の検証用に乱数を作りたいのですが、0や1(0%や100%)は除きたいのです。もちろん非常に小さい数でも0でなければ採用したいのですが0だけはダメです。 実用上、RANDでも0は殆ど出ないとは思いますが…あるいは乱数を発生させておいて0になった時だけ再計算させれば良いのかもしれませんが、出来れば再計算無しで最初からそうしたいのです。
- 締切済み
- Excel(エクセル)
- 乱数を発生させるプログラムを教えてください。
タイトルのままなのですが、1から100までの乱数を発生させるプログラムを知りたいです。 乱数をxとおくと、xの値は、0<x<1の範囲内でお願いします。 C言語で、rand関数を用いて、どうかお願いします。
- ベストアンサー
- C・C++・C#