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

わんくま同盟

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

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


(過去ログ 18 を表示中)
■7076 / )  Re[13]: Long型の乱数を生成する自作クラスをつくりたい
□投稿者/ れい (85回)-(2007/08/29(Wed) 21:48:57)
No7041 (ぼのぼの さん) に返信
> ■No7022 (れい さん) に返信
> そこなんですよね。経営的視点で見ると、そこに時間を割いても会社の利益に直接結びつかない。
> となると技術者としての自己満足の世界になってくるわけで、個人的に楽しめるかが重要になる。
> 自分の場合は、最近はこういう数学的に深いとこよりもユーザビリティとかの方に興味があるので、
> ここにエネルギーをかける気力は今のところあまりないんですよね(^^;
>
> UInt64で計算するバージョンを作ってみました。
> もし穴が空いていたら遠慮なく突っ込んでください。

やっぱり一様性はあんまりよくないですね。

> ul = umin + ul Mod (umax - umin + 1UL)

こうやって余りを計算してしまうと、
どうしても偏りが出てしまいます。

umin = 0
umax = ULong.MaxValue*2/3

となるとULong.MaxValue/3を超える数と超えない数の出現確率は
倍違うことになります。

切ったり貼ったりでは、
どうやっても一様性が保てません。

サイコロで1〜5の乱数が欲しいとき、
6を1として扱ってしまっては、いけないんです。

・6が出たときにサイコロを振りなおす
・はじめから20面体のサイコロを使う

など、違う方法を考えないといけません。




返信 編集キー/


管理者用

- Child Tree -