• ベストアンサー

VBAで偏りのある乱数を出したい場合

質問が的外れだったらすみません ExcelのVBAで、たとえば1から5の数字をランダムで出す時 2の出る確率を他より高くする方法はありますでしょうか? 宜しくお願いします

質問者が選んだベストアンサー

  • ベストアンサー
  • nicotinism
  • ベストアンサー率70% (1019/1452)
回答No.3

昔、Accessでやった場合はこんな感じ。参考になるかな? Function omikuji() '大凶5、凶10、小吉30、末吉25、吉20、大吉10 の比率   Dim mikuji As Single      Randomize   omikuji = Int((100 * Rnd) + 1)      Select Case omikuji     Case Is > 95       Forms!Fおみくじ!おみくじ = "大凶"     Case Is > 85       Forms!Fおみくじ!おみくじ = "凶"     Case Is > 55       Forms!Fおみくじ!おみくじ = "小吉"     Case Is > 30       Forms!Fおみくじ!おみくじ = "末吉"     Case Is > 10       Forms!Fおみくじ!おみくじ = "吉"     Case Is > 0       Forms!Fおみくじ!おみくじ = "大吉"   End Select End Function

lastgame
質問者

お礼

参考になりました 有難うございます

その他の回答 (2)

noname#91724
noname#91724
回答No.2

乱数の発生と別に表をつくります。 乱数側で発生した数字に対応するVLOOKUP関数にて、 表から1~5までの数値を拾います。 発生する乱数は100でも200でもOK。 表の2の割合を多くする。 ・・説明下手&的はずれ?

lastgame
質問者

お礼

参考になりました 有難うございました

  • Xaval
  • ベストアンサー率58% (61/105)
回答No.1

確率自体にウェイトをおけばよいのでは? 1,2,3,4,5の比率をそれぞれ10,20,10,10,10 にしたければ、(合計が60であるのを考慮して) MAX 60のランダムな数値nが 0/60 < n < 9/60 なら1 10/60 < n < 29/60 なら2 30/60 < n < 39/60 なら3 : など

lastgame
質問者

お礼

参考になりました 有難うございます

関連するQ&A