C# と VB.NET の質問掲示板
ASP.NET、C++/CLI、Java 何でもどうぞ
C# と VB.NET の入門サイト
Re[2]: 行ごとに乱数で0、1を指定して二次配列を作る方法について
(過去ログ 165 を表示中)
掲示板トップ
C# と VB.NET 入門
新規作成
利用方法/規約
トピック表示
ランキング
記事検索
過去ログ
[トピック内 5 記事 (1 - 5 表示)] <<
0
>>
■95432
/ inTopicNo.1)
行ごとに乱数で0、1を指定して二次配列を作る方法について
▼
■
□投稿者/ サイカク
(1回)-(2020/08/01(Sat) 21:27:09)
分類:[C#]
初めて投稿いたします。
C#を始めて1週間ののサイカクと申します。
VisualStudioCodeで開発を行っており、versionは1.47です。
現在、「0」と「1」で構成された6×6の二次配列を作ろうとしています。
その際、行ごとに「0」を4つ、「1」を2つランダムで格納させたいです。
(列ごとの「0」と「1」の構成はどんな形であれ構わないです)
つまり、36個の要素の構成は最終的に「0」が24個、「1」が12個になります。
具体的には
000110
100100
001010
110000
101000
001001
このような二次配列を完成させたいと思っています。
二次配列の作り方や、1次配列の乱数指定方法は存じているのですが、
組み合わせて運用する方法を理解できなかったので、ご質問させていただきました。
初歩的な質問で申し訳ありません。
何卒ご回答のほど、よろしくお願い申し上げます。
引用返信
編集キー/
編集
■95434
/ inTopicNo.2)
Re[1]: 行ごとに乱数で0、1を指定して二次配列を作る方法について
▲
▼
■
□投稿者/ キングダム
(60回)-(2020/08/01(Sat) 22:14:30)
■
No95432
(サイカク さん) に返信
{0, 0, 0, 0, 1, 1}
をシャッフルして各行に入れて行けば良いです。
シャッフルのアルゴリズムは.NETにあったかしら。
ちょっとわからないですけど、Fisher-Yatesでググったら幸せになれます。
引用返信
編集キー/
編集
■95436
/ inTopicNo.3)
Re[1]: 行ごとに乱数で0、1を指定して二次配列を作る方法について
▲
▼
■
□投稿者/ くまくま
(24回)-(2020/08/01(Sat) 22:20:50)
2020/08/01(Sat) 22:22:47 編集(投稿者)
2020/08/01(Sat) 22:21:51 編集(投稿者)
■
No95432
(サイカク さん) に返信
>>行ごとに「0」を4つ、「1」を2つランダムで格納させたいです。
よくやる方法
1. まず1次元で「0」を4つ、「1」を2つの全パターンの配列を作成
これを「パターン配列」とすると
2a. 重複ありの場合
ランダムで「パターン配列」のインデックスを取得し2次元配列に設定
2b. 重複なしの場合
ランダムで「パターン配列」のインデックスを取得し
2b.a. 「パターン配列」に値が設定されていたら2次元配列に設定
その後「パターン配列」から値を削除
2b.b. 「パターン配列」に値が設定されていなかったら再度インデックス取得
こんな感じだとデバックもしやすいし「パターン配列」の設定次第でランダム性を変化もしやすいですよ
引用返信
編集キー/
編集
■95439
/ inTopicNo.4)
Re[2]: 行ごとに乱数で0、1を指定して二次配列を作る方法について
▲
▼
■
□投稿者/ サイカク
(2回)-(2020/08/01(Sat) 22:54:01)
■
No95434
(キングダム さん) に返信
早速のご返信ありがとうございます。
> Fisher-Yatesでググったら幸せになれます。
このアルゴリズムを使用したところ、うまく二次配列を作ることができました。
非常に勉強になりました。
ありがとうございます。
解決済み
引用返信
編集キー/
編集
■95440
/ inTopicNo.5)
Re[2]: 行ごとに乱数で0、1を指定して二次配列を作る方法について
▲
▼
■
□投稿者/ サイカク
(3回)-(2020/08/01(Sat) 23:01:18)
■
No95436
(くまくま さん) に返信
ご返信ありがとうございます。
> 1. まず1次元で「0」を4つ、「1」を2つの全パターンの配列を作成
> これを「パターン配列」とすると
>
> 2a. 重複ありの場合
> ランダムで「パターン配列」のインデックスを取得し2次元配列に設定
>
> 2b. 重複なしの場合
> ランダムで「パターン配列」のインデックスを取得し
> 2b.a. 「パターン配列」に値が設定されていたら2次元配列に設定
> その後「パターン配列」から値を削除
> 2b.b. 「パターン配列」に値が設定されていなかったら再度インデックス取得
こちらの方法でも試してみたところ、求めていた二次配列が出来上がりました。
デバッグも簡単そうなので、今後の開発で役立てていこうと思います。
ご指導いただき、ありがとうございました。
解決済み
引用返信
編集キー/
編集
トピック内ページ移動 / <<
0
>>
このトピックに書きこむ
過去ログには書き込み不可
管理者用
-
Child Tree
-