Erzeugung von gleichmäßig verteilten Zufallszahlen (0,1) - Seite 2

 
gumgum >>:


== :(

Ich habe Ihnen einen funktionierenden Code gegeben, der akzeptable Ergebnisse für Anwendungen liefert. Außerdem können Sie einen beliebigen MF-Bereich angeben.

 
joo >>:

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

Und was ist mit dem Löffel?

 
Yurixx >>:

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

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

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

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

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

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


???!!!!

"Oder vielleicht wollen Sie, dass Ihr GSH alle Nummern ein Segment (0,1)?" Was ist das für ein Unsinn? Haben Sie Zahlentheorie studiert?

 
Urain >>:

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

Soll ich noch etwas mehr in den Mund nehmen? :)

 
joo >>:

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


Los geht's!
 
gumgum >>:


Ну поехало!

Also wirklich, was kann man nicht normalisieren die nehmen selbst.

 
gumgum >>:


Ну поехало!

Na los! 32767 Stück pro Längeneinheit sind in Ordnung. Man könnte natürlich auch 100000000 machen, aber warum?!

 
Urain >>:

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


Ich tue dies.

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);
}
Aber....
 

Kaugummi, dann versuchen Sie dies. Das Prinzip ist das gleiche, aber anstatt ganze Zahlen von 0 bis 32767 zu erzeugen, erhält man etwa 0 bis 2^30. Jede Zahl ist MathRand() + MathRand()*32768. Ich habe noch nicht erforscht, wie die Verteilung sein wird, aber für nicht allzu anspruchsvolle Aufgaben wird sie hoffentlich tip-top sein.

Dies sind Zahlen vom Typ AB im Zahlensystem 32768.

Besser noch: Verwenden Sie eine DLL. Es gibt eine, sie erzeugt sofort so große Zahlen.

 
Mathemat >>:

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

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


Ich habe es ausprobiert. Dort ist es nicht gut.