• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:重複なし乱数について)

VBAで重複なしの乱数を使った数比べゲームを作成する方法

imogasiの回答

  • imogasi
  • ベストアンサー率27% (4737/17068)
回答No.5

乱数と言うのは、同じ値も発生してこそ、乱数でしょう。省いたら厳密には乱数でなくなるのでは。 質問のようなことをやると、乱数と唱えているだけで、ただの自己満足でしょう。 乱数を数学的に勉強してください。または数学のカテゴリで、数学の識者に質問したら。 でも回答があっても、それを理解できないだろうと思うが。 ーー それより重複のない連番などをつくり、別(隣)列に乱数をだし、その列で元データとともにソートし、上から1つづつ元のデータ(乱数でない)を順に採り上げていく、方が良いのでは。

関連するQ&A

  • 乱数について(Rnd関数)

    すみません。質問があります。 VBAを用いてパチスロシミュレータを作成しているのですが 乱数が偏っている気がしてなりません。 乱数はRnd関数を用いて0~65535の範囲で生成しています。 もちろん初期化時にRandomizeも用いています。 毎ゲーム開始時にそのゲームで必要な乱数を4つ r1 = Int(Rnd() * 65536) r2 = Int(Rnd() * 65536) r3 = Int(Rnd() * 65536) r4 = Int(Rnd() * 65536) というように生成しています。 それらの乱数を用いて複雑なモード移行などを行っているのですが、 ある条件下でr1のあるビットが1になりやすいというような現象が起こります。 乱数に法則性があることは不思議ではないんですが、Rnd関数による乱数っていうのは多少複雑な処理をしただけでこのような不具合が出る可能性があるのでしょうか。 私のプログラムに問題があるとは思うのですが、「もしかして、乱数のせいかも?」という疑念を抱いてデバッグするのはつらいものがあるので。 ですので、 ・変な使い方をすれば目に見えて偏る可能性もある。 という意見の方はその「変な使い方」というのを具体的に教えていただけないでしょうか? また、そのような意見の方がしばらくいらっしゃらない場合はRnd関数による乱数は実用上問題なく使えると解釈したいと思います。 よろしくおねがいします。

  • VBで作った乱数を一度も重複させずに表示する方法を教えてください!

    VB2005で乱数を作り、ボタンを押すごとに一つづつその数字がひょうじされるようにしたいのですが、その数字が一度も重複されないようにするにはどうしたらいいのでしょうか? 例えばボタンを百回押すと、1から100までの数字がランダムに、一度も重複されずに表示されるようにするにはどのようなコードを書けばよいのでしょうか?

  • 乱数

    乱数を発生させる際に Sub Sample() Debug.Print Int((10 - 1 + 1) * Rnd + 1) End Sub で、1から10までの乱数を発生できますが、 1から10と言う連続した数字ではなく、 例えば10,13,18,43・・・ という規則性のない複数の数字からランダムに数字を発生させるにはどうすればいいでしょうか? 10,13,18,43の中から10を返したり、18を返したりする方法を教えてください。

  • 重複乱数で処理終了

    java のプログラミングについて質問です。 乱数を発生させ それまでと同じ値が出たら 処理を終了させる。 というプログラムを考えています。 例えば乱数が 1,4,2,6,5,7,9,3,4,3,6,5,4,5,6,7,8,8,9,7,・・・ という順で出た場合 1,4,2,6,5,7,9,3 のみを【表示】させ、処理を終了するというものです。 重複したときに処理を終了する というプログラムが分からない状態です。 分かる方いらっしゃいましたら、ご教授願います。

    • ベストアンサー
    • Java
  • エクセルで重複しない乱数の発生

    今エクセルで正負の数の足し算の100ます計算を作っていたのですが、 どうしても乱数表示をさせている所のどこかで数字が重複してしまい困っています。 なにかいい式はありませんでしょうか? ちなみに乱数の数字の範囲は-10~10にする為に、 =INT(RAND()*(10+10)-10) という式でやっています。 素人質問ですがよろしくお願いします<(_ _)>

  • 重複しない乱数整数を発生させる。

    重複しない乱数整数を発生させるため、次のような構文を作りましたが、うまくいきません。 アドバイスをお願いします。 Sub RRR() Dim A, B, C, D, E As Integer A = 1 B = 10 For D = A To B Randomize E = Int((B - A + 1) * Rnd + A) Cells(D, 1) = E Next D End Sub

  • 乱数で同じものが出ない処理ってどうやるんですか?

    .NETでタイピングゲームを作っています。 乱数を使って日本語とそのローマ字を1セットとして表示していくプログラムなんですが、どうしても同じものが出てしまうのですが、同じ日本語とローマ字のセットが表示されないようにするにはどうすればよいでしょうか? ちなみに、コード下記のように作りました。 Randomize() 乱数 = Math.Floor(Rnd() * 要素数) + 1 If 乱数 Mod 2 = 0 Then '乱数が偶数の時 Label1.Text = Typeword(乱数 - 1) '日本語表示 Label2.Text = Typeword(乱数) 'ローマ字表示   elseで、乱数が奇数の処理を行う。

  • 乱数がうまくランダムされない

    コマンドボタンを押すごとに画像をランダムに表示したいのですが 決まった順番で表示されてしまいます。 (画像はMy Picturesに440個入っています。) Sub ボタン_Click() Dim i As Long '画像をランダムに表示 i = Int((440 - 1 + 1) * Rnd + 1) Forms("フォーム1").ボタン.Picture = "D:\My Documents\My Pictures\画像" & i & ".ico" Debug.Print i End Sub コマンドボタンを何回かクリックし 上記のコート゛を実行してイミディエイトウインドウで確認すると 311 235 255 128 133 341 7 335 359 となります。 何回やってもこの順番です。 なんの規則かわかりません。 確かにランダムなのですが 本当にランダムにするのはどうすればいいでしょうか? 「i = Int((440 - 1 + 1) * Rnd + 1)」 ここに原因があると思うのですが どうすればいいでしょう? よろしくお願いします。

  • 重複しない乱数発生

    初めて投稿させて頂きます。 サイコロを振って、一度出た目はもう出ないような ゲームをプログラミングしています。 Dim i As Integer Dim j As Integer Dim t As Integer Dim r(6) As Integer 'コンピュータ Dim b As Integer 'プレイヤー Private Sub Command1_Click() b = Val(Text2.Text) Randomize r(6) = Int(Rnd * 6 + 1) '1~6までの乱数発生 Text1.Text = r(6) For i = 1 To n r(i) = i 'r(i)~r(n)に1~nの値を格納 Next i For i = n To 2 Step -1 j = Int((i - 1) * Rnd() + 1) '1~i-1の範囲の乱数 t = r(i): r(i) = r(j): r(j) = t 'r(i)とr(j)の交換 Next i For i = 1 To n Text1.Text = r(i) Next i If r(i) < j Then Label2.Caption = "あなたの勝ちです" Else Label2.Caption = "あなたの負けです" End If 幾つか考えてこれで落ち着いたのですが、これでは まだ重複してしまいます。 どこが問題なのかご指摘頂けるようお願いします。 一度出た目は出ないようにするので、全部で6回試行 することになります。またその6回分の結果を表示したいのですが、 Text3.Text = r(1) Text4.Text = r(2) Text5.Text = r(3) Text6.Text = r(4) Text7.Text = r(5) Text8.Text = r(6) としてしまうと全てに0が表示され、結果が表示されません。 これについても回答をお願いします。 まだ初心者ですが、よろしくお願いします。

  • 1万から100万の乱数を発生させるには?

    ■VBのバージョン : VB6 お世話になります。 斎藤と申します。 1万から100万までの乱数を発生させたいのですが e = CInt(Int((100000 - 10000 + 1) * Rnd() + 10000)) 公式に書いてあったサンプルを用いたこのコードだとオーバーバッファしてしまい 途方にくれています。 お知恵を拝借したいと存じます。 よろしくお願い致します。