• ベストアンサー

c++ 乱数生成について

hashioogiの回答

  • hashioogi
  • ベストアンサー率25% (102/404)
回答No.2

該当するビット列は 00001111 00010111 : 11110000 の70個です。ですからまず70個のビット列を作成し、要素数70の配列 hairetuに格納しておきます。 整数の乱数を次々に発生させ、70で除した余りrを求めます。余りrは0~69のはずです。 次々にhairetu [r]を使用します。

yosi606
質問者

お礼

おお、やり方まで丁寧にありがとうございます! ビット列は乱数を使って1000個くらい作ってみます!解答ありがとうございました!

関連するQ&A

  • 乱数の生成について

    下記のスクリプトではボタンをクリックして乱数を生成しています。 ボタンをクリックする事無く、windowが開くと同時に乱数を生成するにはどのようにすれば良いでしょうか? <HTML> <HEAD> <SCRIPT LANGUAGE="JavaScript"> <!-- function gen_random(num1, num2) { retval=Math.random(); document.myform.ans.value = (Math.floor(retval * (num2 - num1)) + eval(num1)); } //--> </SCRIPT> </HEAD> <BODY> <center> <form name=myform> 乱数の範囲 <input type=hidden name=d1 value=1000> <input type=hidden name=d2 value=9999> <input type=button name=btn1 value=乱数発生 onClick=gen_random(myform.d1.value,myform.d2.value)><br> 乱 数:<input type=text name=ans size=4> </form> </center> </BODY> </HTML>

  • 擬似乱数生成について

    お世話になります。 下記、問題について教えてください。   ============ 問題 =============   線形合同法はA,C,Pを秘密の定数(Pは素数),初期値をR1として下記演算によって計算される系列 R1,R2,R3・・・・を擬似乱数として用いる。 R_{i} = A・R_{i-1} + C (mod P) このアルゴリズムと素数Pがわかっているとき、いくつの乱数値がわかれば次の乱数値が計算できるか?その理由も示せ。   ============================= 自分なりに調べてやってみたのですが、いまいちよくよく分かりません。 直感的に、未知数が3個あるので連続した3つの乱数値を各Rとして代入すれば、2元1次方程式を得られ、A,Cが決定できると思ったのですが、どうもうまくいかない・・・ 暗号理論の専門書を読んでみたところ、やはりPが判明いてる場合、連続した3つの値で良いようです。もしPが判明していない場合でも、4つ以上の連続した値から次の乱数値が分かるそうです。 完全に混乱しています。どなたか分かる方、解説していただけませんか。 よろしくお願いします。

  • 重複しない乱数の生成

    他の質問での回答に対してもう少し具体的に知りたいと思って投稿しました。 自分はいわゆる日曜プログラマです。 勉強のつもりでOKWebのコンピュータ関連でいろいろ回答してます。 (未熟者なのでとんちんかんなのが多いですが) で次の質問に回答しました。内容は「重複しない乱数を発生させる方法」です。 http://okweb.jp/kotaeru.php3?q=1239644 私が回答したのは#10です。私の考えは 1. 最初に配列に重複しない値を入れ(1から100を順番に) 2. 2要素の値を入れ換える 3. 2を任意の回数繰り返す 4. 配列の先頭から値を取り出す という考えです。 が、そのあと#12の回答があり、それを読むと私の方法ではマズイようです。 「どうしてマズイのか」ということはなんとなくわかった(ような)気がするんですが、 では「具体的にどうすべきなのか」が知りたいです。 違う方法として自分ではこう考えました。 上記1の配列(これを配列Aとする)と同じ要素数(ここでは100個)の配列Bを作って 1. 0~(配列Aの要素数 - 1)の範囲で乱数を発生させる -> 得られた数値をnとする 2. 配列A[n]の値を配列Bに入れる -> 最初は配列B[0]に入れる 3. 配列A[n]を削除 -> 要素数が1個減る 以下これを繰り返し、配列B[99]まで入れて終了。 過去の質問を覗いてみましたが、いろいろな方法があってどれがいいのか迷ってきま した。どちらかというと具体的なソースではなく考え方を教えてください。 よろしくお願いします。

  • ある擬似乱数の生成方法について

    ある擬似乱数の生成方法について 『ある周波数とある周波数を組み合わせて作る擬似乱数』という様なことを以前聞いたことがあるのですが、具体的方法をご存知の方がいらっしゃいましたら、教えて下さい! よろしくお願い致します。

  • 乱数の生成について

    Javaの本を購入し、演習を行いましたが思った以上に理解できませんでした。 例題と演習を記入いたしますので、どなたかご教示くだされば幸いです。 ちなみにですが、本は初心者向けで例題のみで解けるものと思われます。 【例題1】0~9の数値を乱数で生成して表示 import java.util.Random; public class Lesson2to14 { public static void main(String[] args) { Random rand = new Random(); int lucky = rand.nextInt(10); System.out.println("今日のラッキーナンバーは" + lucky + "です。"); } } 【演習1】一桁の正の整数値、一桁の負の整数値、二桁の正の整数値をランダムで生成せよ import java.util.Random; public class Exercise2to7 { public static void main(String[] args) { Random rend = new Random(); int lucky = rend.nextInt(10); System.out.println("一桁の正の整数値を表示します:" + (lucky + 1)); Random rend2 = new Random(); int lucky2 = rend2.nextInt(9); System.out.println("一桁の負の整数値を表示します:" + -lucky2); Random rend3 = new Random(); int lucky3 = rend3.nextInt(90); System.out.println("二桁の正の整数値をランダムに生成します:" + (lucky3 + 10)); } } 演習1に関しては例題からなんとなく理解をしてプログラムを組むことができました。(当たってるかは不明です...) しかし演習2と3については例題1では組めるのか理解できません。 【演習2】キーボードから読み込んだ読み込んだ整数値±5の範囲の整数値をランダムに生成して表示するプログラムを作成せよ。 0~5であればrend.nextInt(6)で簡単にランダム生成できますが、 -5~5の範囲となると例題だけでは何も思いつきませんでした。 【演習3】 -1.0以上1.0未満の実数値をランダムに生成して表示せよ。 上記の場合はnextFloatから生成された数値から-1引けばできると思います。 しかし、例えば-2.0以上10以下など正負の値をランダムで生成する方法が解っていません。 こちらも良かったらご教示お願い致します。

    • ベストアンサー
    • Java
  • 乱数生成について

    VisualBasic2010を使用しています。 コード内に複数回、乱数を生成しています。 普段は始めだけRandomizeして、Rnd関数を使用していて、毎回違う乱数を生成させているのですが、 今回は毎回同じ乱数を生成させたいのですが、どうやったらできるでしょうか? シード値をどうこうするとは、わかったのですがやり方がわかりません。 わかる方、どうぞよろしくお願いします。

  • 乱数生成について

    c言語のプログラムで、1と-1をランダムにn個出力するプログラムを書きたいと思っています。どのようにすればいいでしょうか。

  • 乱数生成

    java.security.SecureRandomの使い方を教えてください。 シードという考え方がイマイチわかりません。。 お願いします。

    • ベストアンサー
    • Java
  • c言語乱数について

    トランプのシャッフルと同様な操作をコンピュータで行いたい。52枚のトランプを配列に置き換え、1~52の乱数を割り当てる。ただし発生した乱数はすでに割り当て済みの数である場合は、まだ割り当てていない乱数が出るまで繰り返すものとする。 というプログラムをC言語でつくりたいのですがまったくわからないので誰か教えてください。お願いします。

  • c言語で乱数を扱うときの

    乱数を初期化するために srand((unsigned)time(NULL)というのを使いますが これはどういう意味を表してるんでしょうか? timeは1970年から経過した時間を表していることは分かりますし unsignedは符号ビットをなくして表せる数を倍にしてることも分かりますが、 NULLって何のために書いてあるのでしょうか?