
No.7
- 回答日時:
RAND_MAX以上の値を発生させたいならば断然MT(メルセンヌツイスター)をお勧めします。
私自身も課題等で使わせてもらっていますが、アルゴリズムの完成度が高くかなり真乱数に近い疑似乱数を発生してくれます。下に書いてあるサイトからソースをとってきて貼り付けて動かしてみるといいと思います。genrand_int31()なんかは[0,0x7fffffff]の範囲(16進表示で設定してある)で発生することが可能みたいです。つまり0~2147483647までの乱数を表示できます。ぜひ試してはどうでしょうか?
使い方としてはmain関数内にprintf("%10.8u ", genrand_int31());と書くだけで表示してくれるでしょう。後は回数を自分で設定してみたりしてください。
参考URL:http://www.math.sci.hiroshima-u.ac.jp/~m-mat/MT/ …
No.6
- 回答日時:
個人的には、
(double) rand() / (RAND_MAX+1) * (n+1);
で少数以下切捨て
まあこれもあんまりnがでかいと駄目だけど…
Mersenne Twister Home Page
ていうHPに新しい乱数発生アルゴリズムを使った関数が紹介されてます。ソースコードが拝めるのでちょっといいかも。個人的には理解できなかったけど。(汗
参考URL:http://www.math.sci.hiroshima-u.ac.jp/~m-mat/MT/ …
No.3
- 回答日時:
#2の方に横槍失礼しますが
RAND_MAXは再定義するものではありません。
コンパイラ間の互換性をもたせる為に定義されているだけです。
RANDMAXが32767の場合
Nが30000
rand()%N
としたとき0~2767のが2倍2768~29999が発生する確率より2倍高くなってしまいます。
その為、RANMAXに近い値は偏りがでるので注意してください。
>RAND_MAX以上の値を発生させるにはどうすればいいのでしょうか?
#1の方もおっしゃっていますが、複数個つなげればいいでしょう。色々方法はありますが
RANDMAX * rand() + rand()
とすれば
0~1073709056の値が返ってきます。
No.2
- 回答日時:
うーん規定値以上の値を返す擬似乱数関数は無かったと思いますので・・・。
もし3以上の数を表示させたいのであれば
srand((unsigned) time(NULL));
rand()%10+3;
これで3以上で10以下なのですが。
RAND_MAX以上の数を表示させたい場合は
RAND_MAXの再定義が必要ですのでたとえば100万までをランダム最高としたいんだったら。
#define RAND_MAX (100*10000)
と定義しなおして(自分のソースで)
rand()%最高値にしたい数+最低地にしたい数;
と行えばいいんじゃないんでしょうか?
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
VB6.0-整数と余りを求める
-
足して100になるような乱数のア...
-
フォームを開くときに、コンボ...
-
C言語 exitの使い方
-
DataGridView 複数行同時変更...
-
C#で動的にコントロールを取得...
-
余剰演算子について教えてください
-
DWORDって
-
Cプログラムについて
-
vbsでテキストファイル内の文字...
-
列数の多いエクセルのデータを...
-
VBAでダブルコーテーション入り...
-
java final
-
VB6.0 DataGridでのfirstRowの...
-
タンパク質 配列解釈ツール CL...
-
ラズベリーパイ B でgpioを使っ...
-
excelの、ある数式内の{}の意...
-
VisualStudio2022でC言語プログ...
-
stdpicture型の変数に、、
-
エクセル、この関数の意味は?
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
C言語 exitの使い方
-
フォームを開くときに、コンボ...
-
Excel-vba 文字列と変数を...
-
VB6.0-整数と余りを求める
-
ラジオボタンの値の取得につい...
-
足して100になるような乱数のア...
-
VBAで配列のNULL判定
-
VBA コンボボックスの値をスピ...
-
データ構造のmapとは?
-
VBAの定数の使い方で、計算値を...
-
フリーランタイマーの時間差分...
-
1つ前の値を変数に保存する方法
-
C#で動的にコントロールを取得...
-
コンボボックスの名前を変数に...
-
UWSCのcallについて
-
Nullってどういう意味ですか?
-
DWORDって
-
[シェルスクリプト] 空文字の判...
-
Access2003 オートナンバーの現...
-
2つの列で重複するキーの数と...
おすすめ情報