Generazione di numeri casuali uniformemente distribuiti (0,1) - pagina 10

 
alsu >>:

Вы не правы, если стоит задача обеспечить генерацию последовательности СЧ заданной разрядности (заранее неизвестной), о чем и спрашивал топикстартер, то важна именно случайность - только тогда можно получать последовательности чисел с разрядностью по выбору и с "хорошими" характеристиками. Если же комбинировать значения, выдаваемые генератором ГПСЧ, то характеристики процесса не будут в общем случае "хорошими" и тот же DIEHARD он скорее всего не пройдет.

Avete visto che non è un PRNG, ma un RNG? :)

 
SProgrammer >>:

Вы видели что это не ГПСЧ, а именно ГСЧ? :)

RNG differisce da PRNG in quanto ha una fonte di entropia (cioè casualità indipendente dall'algoritmo di generazione utilizzato). Nel mio esempio è presente - in questo caso è un contatore di orologi.

 
alsu >>:

ГСЧ отличается от ГПСЧ наличием источника энтропии (т.е. случайности, не зависящей от используемого алгоритма генерации). В приведенном мной примере он присутствует - в данном случае это счетчик тактов.

Sto parlando, scusate, solo di quello che ho linkato. E come usarlo. :) Non è un PRNG, è un RNG. :)


Ma in generale, parlare di niente - qualsiasi generatore che non utilizza fonti esterne non è un generatore di numeri casuali, ma solo pseudo. QUALSIASI :)

 
Esatto, la casualità assoluta è un'astrazione matematica. C'è solo un grado di approssimazione ad esso, bene, e un grado di consapevolezza dell'oggetto.
 
if(MathRand()+1>16383.5){rand+=MathPow(2,- i);

gumgum, MathPow() è una funzione estremamente lenta. Recentemente ho pubblicato uno studio. E qui avete un grado intero, ed è un numero naturale. Scrivere un emulatore intelligente di naturale al grado naturale.

 

1000000 numeri rstep=32 rsign=1 velocità = 4.97700000

if(MathRand()+1>16383.5){rand+=MathPow(2,- i);}
1000000 numeri rstep=32 rsign=1 velocità = 2.44900000
double ranD(int rsign,int rstep)
{
double div=2;
double rand=0; 
   for(int i=1; i<= rstep; i++)
   {
   //if(MathRand()+1>16383.5){rand+=MathPow(2,-i);}
   if(MathRand()+1>16383.5){rand+=1/ div;}
   div= div*2;   
   }
      if( rsign==1)
         {
         rand=2*rand-1;
         }
return(rand);
}




 
Qualcuno può fare una DLL per esempio da Random Number Generation? Grazie.
 
gumgum >>:
Может кто нибудь сделает dll например из Генерация случайных чисел? Спасибо.

e non da solo?

 
alsu >>:

а самостоятельно нэ?


Non so come creare una DLL. Sto scaricando VS ora, lo capirò e scriverò. Proprio chi ha già creato una dll non è così difficile (credo di sì) se i sorgenti sono tutti disponibili....
 
gumgum >>:


Я не умею создавать dll. Сейчас качаю VS, разберусь и напишу. Просто кто уже создавал dll это не так уж сложно(я так думаю) если исходники все имеются....

c'è un articolo recente sul quinto forum su questo argomento, tutto per i principianti con immagini ed esempi