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で質問しましょう!
似たような質問が見つかりました
- 統計学 Excelによるサンプルの拡大について 6 2023/08/22 16:03
- C言語・C++・C# カードシャッフルのブログラムを使ってc言語でブラックジャックをしたい 2 2022/04/12 15:13
- 統計学 風速を1秒刻みで推定する方法 6 2023/03/03 11:58
- 工学 疑似乱数生成器 3 2023/01/05 02:06
- C言語・C++・C# C言語:数値の桁数指定についての質問です。 8 2022/05/26 23:53
- Excel(エクセル) エクセルで、指定した整数の範囲を乱数4つ発生させる場合 4 2022/04/01 11:44
- その他(コンピューター・テクノロジー) エクセルの課題について 1 2022/07/25 14:39
- PHP csvファイルについて教えて下さい。 2 2023/04/01 19:59
- 物理学 【流体力学】乱流での渦の発生周期について 1 2023/08/20 18:27
- Java Javaの問題なのですが、 永久ループを使って以下に従って数値を出力するプログラムを作成する。 ・1 3 2023/06/06 18:43
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
C言語 exitの使い方
-
数字の位ごとの値を表示するプ...
-
フォームを開くときに、コンボ...
-
10進数をアスキーコードに変換
-
VB6.0-整数と余りを求める
-
C#.netでの切り上げ処理について
-
相関係数p値の出し方
-
VBAの定数の使い方で、計算値を...
-
DataGridView 複数行同時変更...
-
Excel-vba 文字列と変数を...
-
C#で動的にコントロールを取得...
-
【C++/CLI】String型文字列の位...
-
フリーランタイマーの時間差分...
-
4択問題のプログラムでランダム...
-
足して100になるような乱数のア...
-
C#の問題で2つの整数a,bの...
-
バッチファイルで正規表現を使...
-
C言語でしりとりのプログラムを...
-
VBAでダブルコーテーション入り...
-
Cpadで文字化け
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
C言語 exitの使い方
-
フォームを開くときに、コンボ...
-
Excel-vba 文字列と変数を...
-
数字の位ごとの値を表示するプ...
-
VB6.0-整数と余りを求める
-
VBAで配列のNULL判定
-
足して100になるような乱数のア...
-
フリーランタイマーの時間差分...
-
相関係数p値の出し方
-
DataGridView 複数行同時変更...
-
世界のナベアツ
-
10進数をアスキーコードに変換
-
C#で動的にコントロールを取得...
-
ラジオボタンの値の取得につい...
-
DWORDって
-
バッチファイルで正規表現を使...
-
1つ前の値を変数に保存する方法
-
4択問題のプログラムでランダム...
-
VBAの定数の使い方で、計算値を...
-
コンボボックスの名前を変数に...
おすすめ情報