А вам, уважаемый, известно, что между любыми, сколь угодно близкими друг к другу, вещественными числами имеется бесчисленное множество вещественных чисел ?
А известно, что интервал (0,1) по мощности эквивалентен бесконечной прямой ?
Если нет - задумайтесь об этом.
Если да - правильно формулируйте свой вопрос.
Заодно попытайтесь сказать, с какой плотностью (штук на ед. длины) вы хотите иметь генерацию СЧ ?
А может вы хотите, чтобы ваш ГСЧ генерил все числа отрезка (0,1) ?
gumgum, тогда попробуй вот так. Принцип тот же, но вместо генерации целых чисел от 0 до 32767 ты получишь примерно от 0 до 2^30. Каждое число - это MathRand() + MathRand()*MathRand(). Я не исследовал, как будут распределены, но надеюсь, что для не слишком требовательных задач все будет тип-топ.
Это числа вида AB в 32768-ичной системе счисления.
== :(我已经给你提供了工作代码,为应用提供可接受的结果。加上能够指定任何MF范围。
Я Вам дал рабочий код, дающий приемлемые результаты для прикладных задач. Плюс возможность указывать любой диапазон CЧ.
那么勺子呢?
А вам, уважаемый, известно, что между любыми, сколь угодно близкими друг к другу, вещественными числами имеется бесчисленное множество вещественных чисел ?
А известно, что интервал (0,1) по мощности эквивалентен бесконечной прямой ?
Если нет - задумайтесь об этом.
Если да - правильно формулируйте свой вопрос.
Заодно попытайтесь сказать, с какой плотностью (штук на ед. длины) вы хотите иметь генерацию СЧ ?
А может вы хотите, чтобы ваш ГСЧ генерил все числа отрезка (0,1) ?
???!!!!
"或者,也许你希望你的GSH能够产生 所有数字 一段(0,1)? "这是什么鬼话?你研究过数论吗。
Ну так а ложку?
我应该再放一些在嘴里吗?:)
Могет быть, ещё в рот положить? :)
我们来了!
Ну поехало!好吧,真的有什么不能让你自己正常服用的。
Ну поехало!来吧!每单位长度32767件就可以了。你当然可以做100000000,但为什么?
Ну действительно что не можешь сам нормализовать дубль.
我这样做。
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。有一个,它立即产生了这么大的数字。
gumgum, тогда попробуй вот так. Принцип тот же, но вместо генерации целых чисел от 0 до 32767 ты получишь примерно от 0 до 2^30. Каждое число - это MathRand() + MathRand()*MathRand(). Я не исследовал, как будут распределены, но надеюсь, что для не слишком требовательных задач все будет тип-топ.
Это числа вида AB в 32768-ичной системе счисления.
试过了。在那里没有好处。