
No.9ベストアンサー
- 回答日時:
VBAでやるのが簡単です。
以下は重複の無い乱数発生のVBAサンプルです。【手順】
1. [Alt]+[F11]で Visual Basic Editor(以下VBE)起動
2. [挿入]-[標準モジュール]クリック
3. 下記VBAコードをコピー&ペースト
4. VBEを閉じる
5. [ツール]-[マクロ]-[マクロ]で実行
【VBAコード】(次行から終わりまで)
'10×10の重複しない乱数表
Sub Sample()
Dim NumberBuf%(1 To 10, 1 To 10)
Dim intNum%, i%, j%, ItemNum%
Dim tmpBuf
Dim Dic As Object
'Dictionaryオブジェクト生成
Set Dic = CreateObject("Scripting.Dictionary")
'Dictionaryの登録数が100になるまでループ
Do Until Dic.Count = 100
'1~100までの整数で乱数発生
intNum = Int((100 * Rnd) + 1)
'Dictionaryに登録されているか?
If Not Dic.Exists(intNum) Then
'登録されていなければ追加
Dic.Add Key:=intNum, Item:=Empty
End If
Loop
tmpBuf = Dic.Keys
'乱数を10×10の配列に代入
ItemNum = 0
For i = 1 To 10
For j = 1 To 10
NumberBuf(i, j) = tmpBuf(ItemNum)
ItemNum = ItemNum + 1
Next j
Next i
'転記先を変えるにはRange("A1")のA1の部分を変更
'10×10のセル範囲左上角のセルになります
Range("A1").Resize(10, 10).Value = NumberBuf
End Sub
KENKENSP様、このたびは愚問にもかかわらずご丁寧にご返答頂きまことにありがとうございました。おかげ様で問題は無事、完全に解決いたしました。さすがでございます。恐れ入りました。ご教授に心から深く深く感謝申し上げます。
No.12
- 回答日時:
乱数を作る方法で、(重複する値を最初から排除するために)よく値を交換する方法がでてくるけど、
一般的には、交換する方法では均等な乱数が得られない。
例えば、
A,B,Cという3つの値が有った時に、
交換元の値をランダムに3つから1つ選び
交換先の値をランダムに3つから1つ選んだとすると
交換される組み合わせは全てで9通りある。
ところが、A,B,C3つを並べる組み合わせは6通りだから交換の結果は均等な結果にならない。
参考までに。
BLUEPIXY様、このたびは愚問にもかかわらずご丁寧にご返答頂きまことにありがとうございました。おかげ様で問題は無事解決いたしました。ご教授に深く感謝申し上げます。
No.10
- 回答日時:
なんだかVBAが盛り上がってきたみたいなので自分も書いちゃいます。
考え方としては1. 配列に1~100を順番に入れておく
順番に入れておくので重複はあり得ない。したがって重複チェックは必要ない。重複チェックをすると後にいくほどretryが増えるので時間がかかります。
2. 配列の2要素の値を入れ換える
配列のm番目とn番目の値を入れ換える。mとnはRnd関数で決める。たまたまmとnが同じでもエラーにはならない(同じ値を代入するだけなので)。
3. 配列の値をA1のセルから順番に入れていく
実際に書くとこんな感じ。でもExcel持ってないので確認できない。細かいところで間違ってるかも(考え方はいいと思う)。
Private Sub make_table()
Dim numbers(100) As Integer
Dim swapindex(2) As Integer
Dim tmpval As Integer
Dim i As Integer
Const SHUFFLE_TIME = 1000 ' シャッフルする回数(この値は適当に決める)
' 配列numbersに1から100までの数値をいれる(この時点では順番どおり)
For i = 0 to 99
numbers(i) = i + 1
Next
' 配列の値をSHUFFLE_TIMEの回数入れ換える
For i = 1 to SHUFFLE_TIME_time
swapindex(0) = numbers(Int(Rnd * 100))
swapindex(1) = numbers(Int(Rnd * 100))
tmpvalue = numbers(swapindex(0))
numbers(swapindex(0)) = numbers(swapindex(1))
numbers(swapindex(1)) = tmpvalue
Next
' 配列の値を順番にセルに入れる(ここではA1から右に続くようにした)
For i = 0 to 99
Cells(((i \ 10) + 1), ((i mod 10) + 1)).Value = numbers(i)
Next
End Sub
No.8
- 回答日時:
VBAでのソース例です。
Private Sub 乱数()
Dim rIdx As Integer
Dim cIdx As Integer
Dim rRnd As Integer
Dim cRnd As Integer
Dim pivN As Integer
For rIdx = 1 To 10: For cIdx = 1 To 10
Cells(rIdx, cIdx).Value = cIdx + (rIdx - 1) * 10
Next: Next
For rIdx = 1 To 10: For cIdx = 1 To 10
rRnd = Int(Rnd * 10) + 1
cRnd = Int(Rnd * 10) + 1
pivN = Cells(rIdx, cIdx).Value
Cells(rIdx, cIdx).Value = Cells(rRnd, cRnd).Value
Cells(rRnd, cRnd).Value = pivN
Next: Next
End Sub
kigoshi様、このたびは愚問にもかかわらずご丁寧にご返答頂きまことにありがとうございました。おかげ様で問題は無事解決いたしました。ご教授に深く感謝申し上げます。
No.7
- 回答日時:
harukabcde様、このたびは愚問にもかかわらずご丁寧にご返答頂きまことにありがとうございました。おかげ様で問題は無事解決いたしました。ご教授に深く感謝申し上げます。
No.3
- 回答日時:
1. A1~A100に1~100の数字を入力
2. B1~B100に"=rand()"を入力
3. B1~B100をコピーしてC1~C100に「形式を選択して貼り付け」で値のみ貼り付け。
4. C列で並び替え
これでA列がランダムに並ぶ。あとは100x100の表に貼りつける。再計算すればB列の値が変わるのでふたたび3,4を行えばいくらでも表が作れる。3と4の手順をマクロで登録しておくと便利。
VBAが使えればもっとスマートになるけどね。
masapee様、このたびは愚問にもかかわらずご丁寧にご返答頂きまことにありがとうございました。おかげ様で問題は無事、完璧に、解決いたしました。さすがです。すばらしいです。ご教授に深く感謝申し上げます。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Excel(エクセル) エクセルでセルの値分の個数の数字列を自動で入れたい 8 2023/03/14 18:00
- PDF PDFで資料を編集したいです 2 2023/08/10 22:56
- 統計学 サイコロをふる問題。 2 2023/01/26 15:35
- Excel(エクセル) エクセルにおいてセル内の文字を出来るだけ大きく表示する方法を教えてください。 4 2022/07/30 08:08
- Excel(エクセル) ある範囲のセルに何を入力すると、別のセルに○を表示させる 3 2022/04/05 15:51
- その他(Microsoft Office) スプレッドシートについて。 1+1=2 のように表記したいのですが、AとBに入力した数値が合計に反映 2 2022/11/05 11:18
- Excel(エクセル) 差し込み印刷がうまくいかない 2 2022/07/29 12:26
- Excel(エクセル) エクセルで納品書を作成中ですが、関数を教えて下さい。 2 2022/09/05 10:32
- 教育学 エクセルで小数点以下を四捨五入について教えてください。 2 2023/04/05 17:33
- Excel(エクセル) エクセル 可視セル部の数値の抜き出し方法 7 2022/05/14 13:49
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・思い出すきっかけは 音楽?におい?景色?
- ・あなたなりのストレス発散方法を教えてください!
- ・もし10億円当たったら何に使いますか?
- ・何回やってもうまくいかないことは?
- ・今年はじめたいことは?
- ・あなたの人生で一番ピンチに陥った瞬間は?
- ・初めて見た映画を教えてください!
- ・今の日本に期待することはなんですか?
- ・【大喜利】【投稿~1/31】『寿司』がテーマの本のタイトル
- ・集中するためにやっていること
- ・テレビやラジオに出たことがある人、いますか?
- ・【お題】斜め上を行くスキー場にありがちなこと
- ・人生でいちばんスベッた瞬間
- ・コーピングについて教えてください
- ・あなたの「プチ贅沢」はなんですか?
- ・コンビニでおにぎりを買うときのスタメンはどの具?
- ・おすすめの美術館・博物館、教えてください!
- ・【お題】大変な警告
- ・【大喜利】【投稿~1/20】 追い込まれた犯人が咄嗟に言った一言とは?
- ・洋服何着持ってますか?
- ・みんなの【マイ・ベスト積読2024】を教えてください。
- ・「これいらなくない?」という慣習、教えてください
- ・今から楽しみな予定はありますか?
- ・AIツールの活用方法を教えて
- ・最強の防寒、あったか術を教えてください!
- ・【大喜利】【投稿~1/9】 忍者がやってるYouTubeが炎上してしまった理由
- ・歳とったな〜〜と思ったことは?
- ・モテ期を経験した方いらっしゃいますか?
- ・好きな人を振り向かせるためにしたこと
- ・スマホに会話を聞かれているな!?と思ったことありますか?
- ・それもChatGPT!?と驚いた使用方法を教えてください
- ・見学に行くとしたら【天国】と【地獄】どっち?
- ・これまでで一番「情けなかったとき」はいつですか?
- ・この人頭いいなと思ったエピソード
- ・あなたの「必」の書き順を教えてください
- ・14歳の自分に衝撃の事実を告げてください
- ・人生最悪の忘れ物
- ・あなたの習慣について教えてください!!
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
彼女のことが好きすぎて彼女の...
-
首吊りどこ締めるの
-
爪が紫色?
-
EXCELで条件付き書式で空白セル...
-
風俗店へ行く前のご飯
-
精子に血が・・・
-
小数点以下を繰り上げたものを...
-
エクセルで空白セルを含む列の...
-
エクセルで数式の答えを数値と...
-
2つの数値のうち、数値が小さい...
-
検便についてです。 便は取れた...
-
VLOOKUP関数を使用時、検索する...
-
白血球が多いとどんな心配があ...
-
エクセル指定した範囲からラン...
-
健否~書類の書き方~
-
テスターで断線を調べる方法教...
-
勃起する時って痛いんですか? ...
-
イタリアから帰国する際、肉製...
-
エクセル 合計が100%を超...
-
精子が黄色?
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
首吊りどこ締めるの
-
彼女のことが好きすぎて彼女の...
-
EXCELで条件付き書式で空白セル...
-
爪が紫色?
-
ワードのページ番号をもっと下...
-
エクセル指定した範囲からラン...
-
VLOOKUP関数を使用時、検索する...
-
2つの数値のうち、数値が小さい...
-
小数点以下を繰り上げたものを...
-
EXCELで式からグラフを描くには?
-
風俗店へ行く前のご飯
-
リンク先のファイルを開かなく...
-
エクセルで数式の答えを数値と...
-
勃起する時って痛いんですか? ...
-
値が入っているときだけ計算結...
-
MIN関数で空白セルを無視したい...
-
精子に血が・・・
-
一番多く表示のある値(文字列...
-
エクセルのラベルの値(文字列...
-
白血球が多いとどんな心配があ...
おすすめ情報