[リストへもどる]   [VBレスキュー(花ちゃん)]
一括表示

投稿時間:2006/04/23(Sun) 01:31
投稿者名:みゃー
Eメール:
URL :
タイトル:
乱数について
どうもはじめまして、乱数について質問があります。

例題で

Int(Rnd * 26) + 65)

で65〜90の数が取得できるとありました。

Rndは0〜1未満の数の取得だとすると

Rndの最高値 0.9の場合

0.9 * 26 = 23.4

これをIntで23になり

23 + 65 = 88

この計算でいくと65〜88までの数しか取得できないことになります。
自分の計算の仕方が間違っているのでしょうか、
よろしければおしえてくださう

投稿時間:2006/04/23(Sun) 08:51
投稿者名:
Eメール:
URL :
タイトル:
Re: 乱数について
> どうもはじめまして、乱数について質問があります。
>
> 例題で
>
> Int(Rnd * 26) + 65)
>
> で65〜90の数が取得できるとありました。
>
> Rndは0〜1未満の数の取得だとすると
>
> Rndの最高値 0.9の場合
いえ 0.9..9 に非常に近い値が最大値になりえるはずです
(もしかしたら 0.999984741210938 かも)

> 0.9 * 26 = 23.4
25 < 0.9..9 * 26 < 26
だと思います

> これをIntで23になり
>
> 23 + 65 = 88
>
> この計算でいくと65〜88までの数しか取得できないことになります。
> 自分の計算の仕方が間違っているのでしょうか、
> よろしければおしえてくださう
よってInt(0.9..9 * 26 + 65)は最大90でしょうね

投稿時間:2006/04/23(Sun) 08:54
投稿者名:花ちゃん
Eメール:
URL :
タイトル:
Re: 乱数について
> Rndは0〜1未満の数の取得だとすると
> Rndの最高値 0.9の場合

1 未満の最大値は 0.9 ではありません。

聞くまでも無く自分で試してみれば解る事ではないでしょうか?

Private Sub Command1_Click()
    Dim i As Long
    For i = 1 To 100
        Dim R As Single
        R = Rnd
        Debug.Print Int((R * 26) + 65), R
    Next i
End Sub


テストコードを作っている間にかぶってしまったようですね。m(__)m