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

 
alsu >>:

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

你看到它不是PRNG,是RNG吗?:)

 
SProgrammer >>:

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

RNG与PRNG的不同之处在于,它有一个熵的来源(即独立于所用生成算法的随机性)。在我的例子中,它是存在的--在这种情况下,它是一个时钟计数器。

 
alsu >>:

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

对不起,我只是在说,我所链接的内容。以及如何使用它。:)这不是一个PRNG,而是一个RNG。:)


但一般来说,谈不上什么--任何不使用外部资源的生成器都不是随机数生成器,而只是假的。任何一个人 :)

 
非常正确,绝对随机性是一个数学抽象概念。只有在一定程度上接近它,好吧,还有一定程度上对对象的认识。
 
if(MathRand()+1>16383.5){rand+=MathPow(2,- i);

gumgum,MathPow()是一个极其缓慢的函数。我最近发布了一项研究。而在这里你有一个整数度,而且是一个自然数。写一个自然的巧妙的仿真器,以达到自然的程度。

 

1000000数字 rstep=32 rsign=1 速度=4.97700000

if(MathRand()+1>16383.5){rand+=MathPow(2,- i);}
1000000数字 rstep=32 rsign=1 速度=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);
}




 
有人能从随机数生成 中制作一个dll吗?谢谢你。
 
gumgum >>:
Может кто нибудь сделает dll например из Генерация случайных чисел? Спасибо.

而不是靠自己?

 
alsu >>:

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


我不知道如何创建一个dll。我现在正在下载VS,我会弄清楚后再写。只是谁已经创建了一个dll,这并不难(我想是这样),如果来源都是可....。
 
gumgum >>:


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

第五论坛上最近有一篇关于这个问题的文章,都是针对初学者的,有图片和例子。