Excel VBA質問箱 IV

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

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


9130 / 13644 ツリー ←次へ | 前へ→

【29175】負の乱数を発生させる方法 ちくたく 05/9/27(火) 10:37 質問[未読]
【29177】Re:負の乱数を発生させる方法 だるま 05/9/27(火) 10:48 回答[未読]
【29178】Re:負の乱数を発生させる方法 小僧 05/9/27(火) 10:48 発言[未読]
【29180】Re:負の乱数を発生させる方法 でれすけ 05/9/27(火) 11:02 回答[未読]
【29197】Re:負の乱数を発生させる方法 ちくたく 05/9/27(火) 14:03 お礼[未読]

【29175】負の乱数を発生させる方法
質問  ちくたく  - 05/9/27(火) 10:37 -

引用なし
パスワード
   おはようございます。
続けて教えてください。

標題のとおりなんですが、
乱数を、-1〜1の範囲などで、発生させたいと思っています。
ネットで、rnd、負の値、生成、発生、負 などと、
Google検索してみたのですが、情報にあたりません。

rndを使って、フラグを発生させて、できないかなぁ、とも思いましたが、
それもスマートじゃない感じがして、悩んでいます。

どなたか、ご存じのかた、教えてください。お願い致します。

【29177】Re:負の乱数を発生させる方法
回答  だるま WEB  - 05/9/27(火) 10:48 -

引用なし
パスワード
   こんにちは

こんな感じのことでしょうか。^d^

Sub test()
  Const L As Integer = -10
  Const U As Integer = 10
  Const N As Integer = 5
  Dim i As Integer
  
  For i = 1 To N
    Debug.Print Int(Rnd() * (U - L + 1) + L) / 10;
  Next
  Debug.Print
  
End Sub

【29178】Re:負の乱数を発生させる方法
発言  小僧  - 05/9/27(火) 10:48 -

引用なし
パスワード
   ▼ちくたく さん:
こんにちは。
続けてこちらも…(笑)

>乱数を、-1〜1の範囲などで、発生させたいと思っています。

発想の転換ですね^^

乱数を0 〜 2 の間で発生させて 1 を引く

でどうでしょうか。


0.1 単位で…というのであれば

乱数を 0 から 20 の間で発生させて 10 で割って 1 を引く

というような考え方ですね。

【29180】Re:負の乱数を発生させる方法
回答  でれすけ  - 05/9/27(火) 11:02 -

引用なし
パスワード
   こんにちは。

>標題のとおりなんですが、
>乱数を、-1〜1の範囲などで、発生させたいと思っています。
>ネットで、rnd、負の値、生成、発生、負 などと、
>Google検索してみたのですが、情報にあたりません。

ネットで検索する以外に、ヘルプもじっくり読んでみましょう。
VBAのヘルプのRnd関数のページには、以下の様に書いてあります。

>任意の範囲の整数の乱数を生成するには、次の式を使ってください。
>
>Int((upperbound - lowerbound + 1) * Rnd + lowerbound)
>
>この式では、変数 upperbound には範囲の上限の値を指定し、
>変数 lowerbound には範囲の下限の値を指定します。

ヘルプの場合は整数ですが、実数の場合にも簡単に応用できますね。

【29197】Re:負の乱数を発生させる方法
お礼  ちくたく  - 05/9/27(火) 14:03 -

引用なし
パスワード
   だるまさん、小僧さん、でれすけさん。

お返事ありがとうございます。
皆さん、一様に、同様のロジックを呈示して頂き、
あぁ、なるほど、という感じです。

勉強不足ですね。
ありがとうございます。

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