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を探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
首吊りどこ締めるの
-
至急!尿検査前日にオナニーし...
-
尿検査前日に自慰行為した時の...
-
白血球が多いとどんな心配があ...
-
尿検査の前日は自慰控えたほう...
-
検便についてです。 便は取れた...
-
彼女のことが好きすぎて彼女の...
-
勃起する時って痛いんですか? ...
-
EXCELで条件付き書式で空白セル...
-
腕を見たら黄色くなってる部分...
-
EXCELで式からグラフを描くには?
-
変な話しになります。尿検査で...
-
excelでsin二乗のやり方を教え...
-
エクセル指定した範囲からラン...
-
Excelで""で囲む方法
-
ある範囲のセルから任意の値を...
-
2つの数値のうち、数値が小さい...
-
精子が黄色?
-
エクセルでエラーが出て困って...
-
納豆食べた後の尿の納豆臭は何故?
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
至急!尿検査前日にオナニーし...
-
首吊りどこ締めるの
-
尿検査の前日は自慰控えたほう...
-
尿検査前日に自慰行為した時の...
-
検便についてです。 便は取れた...
-
白血球が多いとどんな心配があ...
-
中出しをするとお腹が痛い・・・。
-
射精をして1週間以内に尿検査を...
-
彼女のことが好きすぎて彼女の...
-
腕を見たら黄色くなってる部分...
-
勃起する時って痛いんですか? ...
-
変な話しになります。尿検査で...
-
これって喉仏ですか? 私は女性...
-
EXCELで条件付き書式で空白セル...
-
男です。昨日の午後3時くらいに...
-
今朝、毎朝の習慣でオナニーし...
-
納豆食べた後の尿の納豆臭は何故?
-
1日前の検尿
-
値が入っているときだけ計算結...
-
精子が黄色?
おすすめ情報