Excel VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


3906 / 76734 ←次へ | 前へ→

【78457】Re:数字の出てくる確率を変更したいのですが・・・
発言  γ  - 16/9/24(土) 19:46 -

引用なし
パスワード
   時間がとれなくなったので、こちらのものをそちらで加工してください。

Sub test()
  Dim s1 As String: s1 = "1→2→1→4→3→2→4→1→3→4→2→3→1→2"
  Dim s2 As String: s2 = "1→2→4→3→1→4→2→1→3→2→3→4→1→2"
  
  Dim dic1 As Object
  Dim dic2 As Object
  Dim dic As Object
  
  Dim j  As Long
  Dim k  As Long
  Dim ss As String
  Dim s  As String
 
  Columns("A:A").NumberFormatLocal = "@"
  
  Set dic1 = CreateObject("Scripting.Dictionary")
  Set dic2 = CreateObject("Scripting.Dictionary")
  
  s1 = Replace(s1, "→", "")
  s2 = Replace(s2, "→", "")
  
  For k = 1 To Len(s1) - 2
    dic1(Mid(s1, k, 2)) = Mid(s1, k + 2, 1)
    dic2(Mid(s2, k, 2)) = Mid(s2, k + 2, 1)
  Next
  ' このDictionaryというのは、"12"→"1","21"→"4","14"→ "3" 、・・・のような、
  ' 直前二つの数値に対応する次の数値の組み合わせを管理するもので、
  ' dic1("12") とすると "1" が返るようなデータ構造です。
    
  For j = 1 To 10         'トライアルの数
  
    ss = "12"          '作成文字列(固定の文字列を指定)
    Set dic = dic1       'スタートは系列Aで。
    
    'ランダムな位置からスタート
    'If WorksheetFunction.RandBetween(1, 2) = 1 Then
    '  Set dic = dic1
    '  ss = Mid(s1, WorksheetFunction.RandBetween(1, 12), 2)
    'Else
    '  Set dic = dic2
    '  ss = Mid(s2, WorksheetFunction.RandBetween(1, 12), 2)
    'End If
  
    For k = 1 To 100 - 2    '100 個からなる数字作成のため繰り返し
      s = Right(ss, 2)
      If s = "43" Or s = "14" Or s = "21" Then ' regime switching
        If whichSequence(0.85) = 1 Then
          Set dic = dic1
        Else
          Set dic = dic2
        End If
      End If
      ss = ss & dic(s)  '次の数字を連結する
    Next
    
    '結果出力
    Cells(j, 1).Value = ss
  Next
  
  Columns("A:A").EntireColumn.AutoFit

End Sub
Function whichSequence(v As Double) As Long
  If Rnd < v Then
    whichSequence = 1
  Else
    whichSequence = 2
  End If
End Function

18 hits

【78443】数字の出てくる確立を変更したいのですが・・・ m 16/9/24(土) 11:35 質問[未読]
【78444】Re:数字の出てくる確立を変更したいのです... γ 16/9/24(土) 12:18 発言[未読]
【78445】Re:数字の出てくる確立を変更したいのです... m 16/9/24(土) 13:01 質問[未読]
【78446】Re:数字の出てくる確立を変更したいのです... γ 16/9/24(土) 13:54 発言[未読]
【78447】Re:数字の出てくる確立を変更したいのです... m 16/9/24(土) 14:27 質問[未読]
【78448】Re:数字の出てくる確立を変更したいのです... m 16/9/24(土) 14:37 質問[未読]
【78449】Re:数字の出てくる確率を変更したいのです... γ 16/9/24(土) 14:53 発言[未読]
【78450】Re:数字の出てくる確率を変更したいのです... m 16/9/24(土) 15:20 質問[未読]
【78451】Re:数字の出てくる確率を変更したいのです... γ 16/9/24(土) 15:55 発言[未読]
【78456】Re:数字の出てくる確率を変更したいのです... γ 16/9/24(土) 19:08 発言[未読]
【78457】Re:数字の出てくる確率を変更したいのです... γ 16/9/24(土) 19:46 発言[未読]
【78458】Re:数字の出てくる確率を変更したいのです... m 16/9/24(土) 22:41 お礼[未読]
【78459】Re:数字の出てくる確率を変更したいのです... m 16/9/24(土) 23:32 お礼[未読]
【78462】Re:数字の出てくる確率を変更したいのです... γ 16/9/25(日) 12:24 発言[未読]
【78463】Re:数字の出てくる確率を変更したいのです... γ 16/9/25(日) 12:26 回答[未読]
【78464】Re:数字の出てくる確率を変更したいのです... m 16/9/25(日) 13:30 お礼[未読]
【78460】Re:数字の出てくる確率を変更したいのです... m 16/9/24(土) 23:56 お礼[未読]

3906 / 76734 ←次へ | 前へ→
ページ:  ┃  記事番号:
2610219
(SS)C-BOARD v3.8 is Free