実現したいこと
一次配列に入れた0~9までの10個の配列の数字をランダムに入れ替えたい
発生している問題・分からないこと
ランダムとはいえ、完全にランダムにできない。ので、どうすれば簡単でありながらランダムに数字を入れ変える事ができるのか、考えているが分からない。
該当のソースコード
C#
1namespace GUNDAM 2{ 3 public class RandomClass //処理を書くためのクラス 4 { 5 public int[] Number10 = new int[10] = {0,1,2,3,4,5,6,7,8,9}; 6 public int[] Replacement = new int[10]; 7 8 public void TestRandomNumberCheckFunction() //配列をランダムする 9 { 10 //謎 11 } 12 } 13}
試したこと・調べたこと
- teratailやGoogle等で検索した
- ソースコードを自分なりに変更した
- 知人に聞いた
- その他
上記の詳細・結果
https://detail.chiebukuro.yahoo.co.jp/qa/question_detail/q13246726483
特に情報はなかったです。
https://www.isus.jp/security/drng-guide/
こちらは完全ランダムにしようとしておりましたが、ビジュアルスタジオで使えるか分かりませんでした。
補足
特になし
こちらが参考になるかと思います。
https://www.google.com/search?q=C%23+%E9%85%8D%E5%88%97+%E3%82%B7%E3%83%A3%E3%83%83%E3%83%95%E3%83%AB
うん、多分Shuffleとか呼ばれる関数(あるいはC#だとメソッドか)を書きたい、って質問なんだよな。
そして意外とShuffleの実装は面倒くさい。乱数は独立事象前提なんだけど、Shuffleって従属事象なんだよな(笑)。 => 例えば「くじ引き」がそうで、アルゴリズム的には「配列のランダムな並べ替え」はくじ引きで「無くなるまで引く」に近い
コンピュータで従属事象を扱うのって結構メンドイんだ。
だから気の効いた言語処理系だとShuffleとかライブラリとして提供してたりするんだけど・・・・・・C#にはねぇのか。何サボってんだ、Microsoft(笑)。
単純には次のページのように実装すればいいよ、って話じゃない?
C# で配列をシャッフルする:
https://www.delftstack.com/ja/howto/csharp/shuffle-array-in-csharp/
>C#にはねぇのか。
.NET 8から実装されてます。
> .NET 8から実装されてます。
あ、そう。
ならそれ使えば済む話だよね?
質問者さんが.NET 8以降を使用しているのか分かりません。
.NET Frameworkなら使えませんし・・・
> 質問者さんが.NET 8以降を使用しているのか分かりません。
あ~、そうなのか~。
結構新しいのかしらん?
(ぶっちゃけ、C#は触った事ナシ・笑。F#くらいしか触ったことないからゴメン・笑)
間違ってたらごめんなさい。
Shuffleって擬似乱数つかってるかと、リンクに書いてあるようなセキュリティとかででてくる乱数を使わないと完全とはいえないかもしれない。
最終的な目的を書いてないのでわからないが、「完全ランダム」と、わざわざ書いてるので気になりました。
(何らかの方法論が得られたとして,それが「完全にランダム」か否かって,どうやって判断するんだろう?)
所詮疑似乱数になるよねぇ。
C#の乱数の実装法ってどっかに書いてあるのかしらん?
メルセンヌ・ツイスタ?
どうなんだろ。
ん~。ザーッと検索した限り、.Net 4~5の頃「酷かった」って話は書いてあるけど。
多分.Net 8~9になる(現行?)とMicrosoftのC#実装はマシになってるんじゃないか・・・・・。
いずれにせよ、質問は「もっとマシな疑似乱数生成器を使いたい」って言う意味なのかしらん。
「YAmaGNZ
2025/06/09 15:53
こちらが参考になるかと思います。
https://www.google.com/search?q=C%23+%E9%85%8D%E5%88%97+%E3%82%B7%E3%83%A3%E3%83%83%E3%83%95%E3%83%AB」
拝読いたしました。
「cametan
2025/06/09 16:29
うん、多分Shuffleとか呼ばれる関数(あるいはC#だとメソッドか)を書きたい、って質問なんだよな。
そして意外とShuffleの実装は面倒くさい。乱数は独立事象前提なんだけど、Shuffleって従属事象なんだよな(笑)。 => 例えば「くじ引き」がそうで、アルゴリズム的には「配列のランダムな並べ替え」はくじ引きで「無くなるまで引く」に近い
コンピュータで従属事象を扱うのって結構メンドイんだ。
だから気の効いた言語処理系だとShuffleとかライブラリとして提供してたりするんだけど・・・・・・C#にはねぇのか。何サボってんだ、Microsoft(笑)。
単純には次のページのように実装すればいいよ、って話じゃない?
C# で配列をシャッフルする:
https://www.delftstack.com/ja/howto/csharp/shuffle-array-in-csharp/」
簡単に組むのなら、お二人のようにすれば良いのですね。ありがとうございます。とても参考になります。
「質問者さんが.NET 8以降を使用しているのか分かりません。
.NET Frameworkなら使えませんし・・・」
.NET framework4.8を使用しております。
「tmp
2025/06/09 17:47
間違ってたらごめんなさい。
Shuffleって擬似乱数つかってるかと、リンクに書いてあるようなセキュリティとかででてくる乱数を使わないと完全とはいえないかもしれない。
最終的な目的を書いてないのでわからないが、「完全ランダム」と、わざわざ書いてるので気になりました。」
あまりパソコンに詳しくなく、勉強のためにしております。
その中でランダムな数字を組み込む仕様があり、そのために調べておりました。
「fana
2025/06/09 18:12
(何らかの方法論が得られたとして,それが「完全にランダム」か否かって,どうやって判断するんだろう?)」
疑似ランダムで構いません。よろしくお願いいたします。
「cametan
2025/06/09 18:16
所詮疑似乱数になるよねぇ。
C#の乱数の実装法ってどっかに書いてあるのかしらん?
メルセンヌ・ツイスタ?
どうなんだろ。」
メルセンヌ・ツイスタのウィキペディア記事を見ました。category:乱数にも目をとおします。人間を対象としてランダムに数がほしいです。PCが同じランダム生成方法を使ってランダムを作られるまでが目的ではありません。
解決済みにした場合は下記のどちらかを実施して欲しいです。
結局、どのように解決したのかがわかりません。
1.回答者の中にベストアンサーがあれば、ベストアンサーを付ける。
2.自身で回答を付ける。
(この質問は「解決済」って表示されてるけど,どの回答もBAにはなってないように見える.これどういう状況なんだろう? そんなことできるんだっけ?)
@kikukikuさん
> 解決済みにした場合は下記のどちらかを実施して欲しいです。
おそらく質問者さんはBAを押していると思われます。
しかし不具合でうまく反映されなかった。そしてもう出来ることはない状況だと思われます。
[「ベストアンサー」とはどのボタンの事でしょうか](https://teratail.com/questions/672bdqr16qnya5)
@fanaさん
> (この質問は「解決済」って表示されてるけど,どの回答もBAにはなってないように見える.これどういう状況なんだろう? そんなことできるんだっけ?)
はい。以前から稀に見られる現象です。
おそらくteratail側の不具合で、質問者に非はないと思われます。
[コンパイルエラー CS1513](https://teratail.com/questions/4pyhguqlnbx92q)
>しかし不具合でうまく反映されなかった。そしてもう出来ることはない状況だと思われます。
そんなことあるんですね。
承知致しました。

回答5件
あなたの回答
tips
プレビュー