更多的CPU /时间效率的方式来得到n个准随机数比以N兰特()调用? [英] More CPU/time-efficient way to get N quasi random numbers than using N rand() calls?

查看:174
本文介绍了更多的CPU /时间效率的方式来得到n个准随机数比以N兰特()调用?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

这是一个延续的<一个href="http://stackoverflow.com/questions/10064550/generate-n-quasi-random-numbers-in-less-than-on">another问题如何有效地让准随机数。

This is a continuation of another question about efficiently getting quasi-random numbers.

我需要得到n独特的伪随机数,偏置/配送质量是没什么大不了的。我可以让他们更多的CPU /时间效率比使用N个调用RAND()或/ dev /随机等?也许用在一些随机的号码或类似的东西,一些数学/按位操作。或者用precomputed表或...

I need to get N unique quasi-random numbers, bias/distribution quality is no big deal. Can I get them more CPU/time-efficiently than using N calls to rand() or /dev/random etc? Maybe using some math/bitwise manipulations on few random numbers or something like that. Or using precomputed tables or...

N可以是相当大的像10000或1:1000000。

N can be quite big like 10000 or 1000000.

感谢。

推荐答案

我发现simething这样这里

I found simething like this here:

m_w = <choose-initializer>;    /* must not be zero */
m_z = <choose-initializer>;    /* must not be zero */

uint get_random()
{
    m_z = 36969 * (m_z & 65535) + (m_z >> 16);
    m_w = 18000 * (m_w & 65535) + (m_w >> 16);
    return (m_z << 16) + m_w;  /* 32-bit result */
}

这篇关于更多的CPU /时间效率的方式来得到n个准随机数比以N兰特()调用?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆