A 回答 (7件)
- 最新から表示
- 回答順に表示
No.7
- 回答日時:
RSA に利用するということは、素数判定に使うのでしょうか?そうであれば、あまり質の高くない( mickjey2 さんの使っておられる意味で)乱数発生法でなくてもよいように思います。(素人なので保証はできませんが。)
したがって、線形合同法や C の標準関数でよさそうです。 C の標準関数を使うのであれば hiromichel さんのやり方で、srand を最初の一回だけ、rand を例えば 400 回使えばよいでしょう。標準関数については C の本できちんと確認すべきだと思います。
「時間を使う」というのは hiromichel さんのやっておられるように、種(seed)の初期値に使うのです。プログラムの起動ごとに、初期値として別の値を設定しなければ、毎回同じ乱数が発生してしまいますから。(書いてるうちに mickjey2 さんの詳しいお答えが追加されてしまった。)
以上の答えで不足であれば、次の点をはっきりさせれば、具体的なプログラムを誰かが書いてくれるでしょう。
・発生させる乱数の値の種類(実数/整数/正の整数)と範囲
・ 400 ぐらいの大きさの配列に入れればよいこと
基本的にはこのような考えでよいでしょうけど、RSA に使うんなら多倍長計算が必要なのでは? その場合は複数の基本型の乱数から、多倍長の乱数を構成するのでしょうか。
No.6
- 回答日時:
>でも、起動したときには同じ乱数が発生することにならないように時間を使えばいいと聞いたのです。
疑似乱数発生ルーチンは普通 seed という数字をもっています。
で、使用する前に seed で初期化します。
同じ seed だと同じ乱数データがでてきます。異なる乱数データがほしいときにはseedを変えます。
このseed にパソコンの時間+日付(パソコン内部ではある時点を基準に秒単位の整数で表しています)の数値を使えば起動の度に異なる乱数列が得られると言う意味です。
これを使わなくてもファイルなどに過去のシードを記憶しておいて、一つずつインクリメントしていくのでもちゃんと使えます。
やり方は用途によっていろいろでしょう。
まあ日付+時間データを使う方がお手頃ですけどね。(私ももっぱら普通はこれです)
RSAのプログラムですか、、、手元にないので未確認ですが NRinC にもでていたような気がします。
(いや、別の本だったかもしれません)
No.4
- 回答日時:
どの程度の乱数が望みなのでしょうか。
厳密に言うとこれは擬似乱数といいます。大抵はライブラリにある乱数で事足りると思います。これらは一応はある程度でたらめ度合いを考えられて作られています。
しかし、本当に質の良い擬似乱数をお望みであれば、自作したほうがよいでしょう。
その場合は、Numerical Recipes in C という本をご覧下さい。
質の高い乱数ルーチンの作り方とサンプルプログラムが載っています。
注意深く作られていない乱数ジェネレータだとたとえ線形合同法などなどの手法を用いても、最悪の質になることがあります。
(かくいう私も、モンテカルロシミュレーションで普通のライブラリの乱数を使って、それでトラぶったことがあります)
ありがとうございます。参考にさせていただきます。
実は今RSAのプログラムを取り組んでいて、400くらいまでの乱数(すべての数が同じ割合で出現し、かつ法則のないように)を作りたいのです。
でも、起動したときには同じ乱数が発生することにならないように時間を使えばいいと聞いたのです。
どうでしょう?
No.3
- 回答日時:
たとえば、整数の乱数で(1~10)を発生させるなら...
//時間で乱数の種を発生させる
srand((u_int)time(NULL));
//乱数を発生
randomValue = rand()%10+1;
としてみたらどうでしょうか??
ありがとうございます。
実は今RSAのプログラムを取り組んでいて、400くらいまでの乱数(すべての数が同じ割合で出現し、かつ法則のないように)を作りたいのです。
でも、起動したときには同じ乱数が発生することにならないように時間を使えばいいと聞いたのです。
どうでしょう?
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- 工学 疑似乱数生成器 3 2023/01/05 02:06
- その他(コンピューター・テクノロジー) エクセルの課題について 1 2022/07/25 14:39
- Java Javaの問題なのですが、 永久ループを使って以下に従って数値を出力するプログラムを作成する。 ・1 3 2023/06/06 18:43
- Excel(エクセル) エクセルで、指定した整数の範囲を乱数4つ発生させる場合 4 2022/04/01 11:44
- 統計学 Excelによるサンプルの拡大について 6 2023/08/22 16:03
- 事件・事故 アメリカの銃撃事件は内乱の前兆? 5 2022/06/03 11:46
- 統計学 風速を1秒刻みで推定する方法 6 2023/03/03 11:58
- 物理学 【流体力学】乱流での渦の発生周期について 1 2023/08/20 18:27
- 宗教学 地獄はすでに革命が起きてるんじゃないでしょうか? まず亡者は死なずに永遠に血の池や針山で苦しみ続ける 2 2022/11/03 07:30
- その他(暮らし・生活・行事) 電力料金値上げ反対なら 8 2023/04/14 08:22
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
アウトルックが起動しているか...
-
VBAでOutlookを終了させたい Ex...
-
VBSでExcelのUserFormをエクス...
-
64bitで作ったEXEを32bitで起動...
-
VBで実行中のEXEファイルの情報...
-
AppActivateについて
-
VBSで起動したアプリが前面表示...
-
VBで一定時間毎に他のプログ...
-
HTMLタグの中にDLLを埋め込む事...
-
VBSから別のVBS起動するとき変...
-
二重起動禁止にする理由とは
-
Windows上のプログラム。「予め...
-
C#のフォームから起動するブラ...
-
EclipseとTomcat使用時、すぐに...
-
Eclipseでjavascriptが動かない
-
VBAでSeleniumからChromeを起動...
-
iPad) URL Schemeを使ってアプ...
-
MSペイントを画像ファイル名を...
-
WinSCPで画像のように puttyを...
-
exeファイルを実行するとすぐに...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
アウトルックが起動しているか...
-
WinSCPで画像のように puttyを...
-
VBSから別のVBS起動するとき変...
-
Windows上のプログラム。「予め...
-
VBAでOutlookを終了させたい Ex...
-
VBで実行中のEXEファイルの情報...
-
VBSで起動したアプリが前面表示...
-
Process.Startで起動したアプリ...
-
EXCEL VBAから他アプリケーショ...
-
64bitで作ったEXEを32bitで起動...
-
exeファイルを実行するとすぐに...
-
リムーバブルディスクのフォー...
-
VB6で呼び出し元の情報を取得す...
-
VBAでIEが起動しているか...
-
フォームの最前面が効かない
-
VBAでSeleniumからChromeを起動...
-
エクセル起動時別プロセスで開く
-
VBSでExcelのUserFormをエクス...
-
ACCESS VBAで別のACCESS(mdb)を...
-
別アプリの起動、終了について
おすすめ情報