C#で乱数を生成する際、同じ数しか出ないという事態に直面

  • このエントリーをはてなブックマークに追加

スポンサーリンク

※サイト運営にサーバーは必須です※
ロリポップ! はコスパのよい初心者向けサーバーです~

目次

はじめに

C#で、乱数を発生させようとしても、同じ数字が出力される。

なぜ、ランダムに乱数が発生してくれない?

※この記事を書いている人間はC#の初心者なので、以下で書いていること全て正しいという保証はできない

※Visual Studio 2015でプログラムを動かしている

C#での乱数発生

失敗例

0~9までの乱数を発生させるを100回行うプログラム

 

結果

rand1-1

 

常に同じ数字(数字の6)が出力される

ちなみに繰り返しを100回から2000回に増やすと以下のような結果となった。

rand1-2-1

c#の乱数は、時間を参照しているらしい。(参照している時間は、たぶん、PCの起動時間)

乱数が参照している時間が変化するよりも早く、forのループ文が回ると、その間の結果は変わらないのだろう。

成功例

次は

の部分をfor文の外で宣言する

結果

rand1-2

なんだか、それっぽい乱数を得られた。

もう一度実行してみると結果が変わるrand1-3

乱数を発生させようとするたびに、乱数用のインスタンスを新たに生成するのがまずかったのだろう。

for文の中に、インスタンスを生成すると、常に1回目の乱数生成することになる。

一方で、インスタンスを生成する部分をfor文の外に追い出すと、乱数を1度発生させた後、そのことを受けて、次の乱数を発生させるのだと考えられる。

~ギャンブルに絶対儲かる必勝法があるのだろうか?~

私(サイト主)はこの疑問に対して非常に興味を持ち、プログラミングで検証してみました。

このサイトを応援してもいいかなと思う人はぜひとも購入を検討してみてください。

ギャンブルの必勝法が本当に儲かるかプログラミングで検証してみた

     

コメント

  1. シコイド より:

    んあ!めちゃめちゃ参考になります!ありがとうございます!

コメントを残す

*

日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)