C# と VB.NET の質問掲示板

わんくま同盟

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト


(過去ログ 18 を表示中)
■7128 / )  Re[16]: Long型の乱数を生成する自作クラスをつくりたい
□投稿者/ ぼのぼの (83回)-(2007/08/30(Thu) 15:24:11)
No7124 (れい さん) に返信
> ・whileが一回も実行されないときのulは?(乱数はもう入ってるならOK
コードは、■No7041のものがベースなので、Whileの前に一度サイコロ振ってます。
なのでこの点は無問題です。

> ・Convert.ToUInt64って丸めるけどだいじょうぶ?
これは大丈夫じゃないです。てっきり切り捨てるものとばかり… orz
どうやら\演算子は切り捨てのようなので、ここは

While UInt64.MaxValue Mod (divVal) <> (umax - umin) _
AndAlso (ul \ divVal) = (UInt64.MaxValue \ divVal)

とすれば良さそうですね。

> あと質問です。
> Decimalを使わないのはポリシーですか?
> 遅いからですか?
> Long-ULong変換なんかはDecimal使えばコードは綺麗ですよ。
> 私は速度を測ったことがないのですが、
> 自分で書く価値があるほど遅いのでしょうか。

単純に、MSDNに
http://msdn2.microsoft.com/ja-jp/library/xtba3z33(VS.80).aspx
>Decimal は、すべての数値型の中で最もパフォーマンスの低いデータ型です。
>データ型を選択する前に、精度の重要性とパフォーマンスとを比較検討する必要があります。

と書いてあったので、今回は使わないでやってみよう!と思っただけです。
低いとはいえ、余程の回数繰り返して使わない限り人間が体感できるほどの差はでないとは思います。
が、Long-ULong変換はDecimalを使わなくてもそんなに汚くならなかったので。

> >Dim b() As Byte = BitConverter.GetBytes(0UL)
> これは、魔界の仮面弁士さんのポリシーでしょうか?
> Dim b(8) As Byteでは遅いのかな?
> この心を是非教えてください。

これに関しては、私はコピっただけなのでなんとも言えないですね(^^;
ただ、使わせて頂いた側としてはDim b(8) As Byteと書かれるより理解し易い、とは思います。

返信 編集キー/


管理者用

- Child Tree -