生成均匀分布的随机数(0,1)。 - 页 2

 
gumgum >>:


== :(

我已经给你提供了工作代码,为应用提供可接受的结果。加上能够指定任何MF范围。

 
joo >>:

Я Вам дал рабочий код, дающий приемлемые результаты для прикладных задач. Плюс возможность указывать любой диапазон CЧ.

那么勺子呢?

 
Yurixx >>:

А вам, уважаемый, известно, что между любыми, сколь угодно близкими друг к другу, вещественными числами имеется бесчисленное множество вещественных чисел ?

А известно, что интервал (0,1) по мощности эквивалентен бесконечной прямой ?

Если нет - задумайтесь об этом.

Если да - правильно формулируйте свой вопрос.

Заодно попытайтесь сказать, с какой плотностью (штук на ед. длины) вы хотите иметь генерацию СЧ ?

А может вы хотите, чтобы ваш ГСЧ генерил все числа отрезка (0,1) ?


???!!!!

"或者,也许你希望你的GSH能够产生 所有数字 一段(0,1)? "这是什么鬼话?你研究过数论吗。

 
Urain >>:

Ну так а ложку?

我应该再放一些在嘴里吗?:)

 
joo >>:

Могет быть, ещё в рот положить? :)


我们来了!
 
gumgum >>:


Ну поехало!

好吧,真的有什么不能让你自己正常服用的。

 
gumgum >>:


Ну поехало!

来吧!每单位长度32767件就可以了。你当然可以做100000000,但为什么?

 
Urain >>:

Ну действительно что не можешь сам нормализовать дубль.


我这样做。

double ranD(int rsign,int rstep)
{
double sumR=0;
for(int zr=1;zr<=2;zr++)
{
//----
string ran="0.";
for(int z=1;z<=rstep;z++)
{
ran=ran+DoubleToStr(MathFloor((MathRand()/32767.0)*10),0);
}
double randou=StrToDouble(ran);
if(rsign==1)
   {
   randou=2*randou-1;
   }
sumR+=randou*randou;
//----
}

randou=randou/MathSqrt(sumR);
//Print("randou = "+randou);
return(randou);
}
但....
 

橡皮糖,然后试试这个。原理是一样的,但不是生成从0到32767的整数,而是得到大约0到2^30的整数。每个数字都是MathRand()+MathRand()*32768。我还没有探索过分配情况,但希望对于要求不高的任务来说,它将是最棒的。

这些是32768数字系统中的AB类型的数字。

更好的是,使用一个dll。有一个,它立即产生了这么大的数字。

 
Mathemat >>:

gumgum, тогда попробуй вот так. Принцип тот же, но вместо генерации целых чисел от 0 до 32767 ты получишь примерно от 0 до 2^30. Каждое число - это MathRand() + MathRand()*MathRand(). Я не исследовал, как будут распределены, но надеюсь, что для не слишком требовательных задач все будет тип-топ.

Это числа вида AB в 32768-ичной системе счисления.


试过了。在那里没有好处。